1

Mingw-w64の32ビットコンパイラ(i686-w64-mingw32ツールチェーン)を使用して、Windows用のICUライブラリをクロスコンパイルしようとしています。ホストはUbuntu12.1064ビットです。

私が行った手順は次のようになります。

  1. ここから最新のソースコードアーカイブを入手して抽出します。

  2. ディレクトリのコピーを2つ作成source/します。1つはホスト用、もう1つはターゲット用です。

  3. ホストビルドの場合:

    。/構成、設定 ; 作る
  4. ターゲットビルドの場合:

    ./configure --host = i686-w64-mingw32 --with-cross-build = <host_source_dir>

    ...<host_source_dir>前の手順のディレクトリはどこにありますか。

  5. ターゲットソースディレクトリで実行するmakeと、コンパイルはエラーなしでしばらく進行し、次のエラーがスローされます。

    i686-w64-mingw32-g ++ -O2 -W -Wall -pedantic -Wpointer-arith -Wwrite-strings
    -Wno-long-long -mthreads -o ../../bin/uconv.exe uconv.o uwmsg.o
    -L ../../ lib -licuin50 -L ../../ lib -licuuc50 -L ../../stubdata -licudt50
    -lm uconvmsg / uconvmsg.a
    uconv.o:uconv.cpp:(。text + 0x2f):`_uconvmsg_dat'への未定義の参照

このエラーの原因は何ですか?私は数行をバックアップし、これにも気づきました:

pkgdata:i686-w64-mingw32-gcc -O2 -Wall -std = c99 -pedantic -Wshadow
  -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -mthreads -shared
  -Wl、-Bsymbolic -Wl、--enable-auto-import -Wl、--out-implib=。/all.lib -o
  ../lib/icudt50.dll ./out/tmp/icudt50l_dat.o
icudt50_datをエクスポートできません:シンボルが見つかりません
collect2:ldが1つの終了ステータスを返しました
-ステータスを返す=256
ライブラリファイルの生成中にエラーが発生しました。失敗したコマンド:i686-w64-mingw32-gcc -O2 -Wall
  -std = c99 -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes
  -Wwrite-strings -mthreads -shared -Wl、-Bsymbolic -Wl、--enable-auto-import
  -Wl、--out-implib = ./ all.lib -o ../lib/icudt50.dll ./out/tmp/icudt50l_dat.o   
データのアセンブリコードの生成中にエラーが発生しました。

私は何が間違っているのですか?

4

2 に答える 2

0

したがって、問題は確かに ICU ソース コードにあったことがわかりました。問題が何であるかを正確に理解しているかどうかはわかりませんが、ありがたいことに、他の誰かが 3 つのパッチを作成して作成しました。

最初の 2 つは、上記の私の質問に適用されます。

x86_64 アーキテクチャ用にビルドする場合、上記のリストの 2 番目のパッチの代わりに 3 番目のパッチが使用されます。

の実行時にまだ問題があるようですmake installが、少なくともソース ツリーはビルドされているようです。

于 2013-02-14T06:57:28.130 に答える
0

シンボルの問題をデバッグするには、次のようにフラグ-Wl,--trace-symbol=_uconvmsg_datを指定するだけi686-w64-mingw32-g++です:

i686-w64-mingw32-g++ -O2 -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -mthreads -o ../../bin/uconv.exe uconv.o uwmsg.o -L../../lib -licuin50 -L../../lib -licuuc50 -L../../stubdata -licudt50 -lm uconvmsg/uconvmsg.a -Wl,--trace-symbol=_uconvmsg_dat

于 2013-02-13T22:14:36.040 に答える