私はクロスコンパイルの勇敢な世界に入りました。私は現在gettext 0.18.2
、Ubuntu12.04でMingw-w64を使用してコンパイルしようとしています。configureコマンドは次のようになります。
GNULIB_TOOL=../gnulib/gnulib-tool \
CXX="i686-w64-mingw32-g++" \
am_cv_func_iconv_works=yes \
./configure --host=i686-w64-mingw32 \
--prefix=/usr/i686-w64-mingw32
configureスクリプトの(かなり長い)呼び出しで注意すべきことがいくつかあります。
gettext
が必要です。これは、ソースツリーの1レベル上のgnulib-tool
ディレクトリに保存されます。gnulib
奇妙な理由で、configureスクリプトはMingw-w64のC ++コンパイラを見つけることができないので、明示的に提供します。
configureスクリプト
iconv
は、実際に簡単な例をコンパイルして実行しようとすることにより、インストールされて正しく機能しているかどうかを判断します。ターゲットの実行可能ファイルはUbuntuで実行されないため、これは明らかに機能しません。そこで、iconvがインストールされて機能することをconfigureスクリプトに手動で通知します。
configureを実行した後、を実行しますmake
。これは非常に長時間実行され、リンク段階で失敗します。
Creating library file: .libs/libgettextpo.dll.a.libs/write-po.o: In function `wrap':
gettext-tools/libgettextpo/../src/write-po.c:963: undefined reference to `_rpl_memchr'
./.libs/libgnu.a(strstr.o): In function `two_way_long_needle':
gettext-tools/libgettextpo/str-two-way.h:339: undefined reference to `_rpl_memchr'
gettext-tools/libgettextpo/str-two-way.h:391: undefined reference to `_rpl_memchr'
./.libs/libgnu.a(strstr.o): In function `two_way_short_needle':
gettext-tools/libgettextpo/str-two-way.h:234: undefined reference to `_rpl_memchr'
gettext-tools/libgettextpo/str-two-way.h:268: undefined reference to `_rpl_memchr'
./.libs/libgnu.a(vasnprintf.o): In function `max_room_needed':
gettext-tools/libgettextpo/vasnprintf.c:1699: undefined reference to `_rpl_strnlen'
collect2: ld returned 1 exit status
何がこれらのエラーを引き起こす可能性がありますか?
編集:次の環境変数を次のように追加することで、もう少し詳しく説明しますconfigure
。
gl_cv_func_memchr_works=yes
今私はちょうど得る:
.libs/libgettextpo.dll.a./.libs/libgnu.a(vasnprintf.o):
vasnprintf.c:(.text+0x1260): undefined reference to `_rpl_strnlen'