1

私はクロスコンパイルの勇敢な世界に入りました。私は現在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'
4

1 に答える 1

1

configure スクリプトに次のオプションを追加することで、最終的にはばかげたものをコンパイルすることができました。

gl_cv_func_memchr_works=yes
ac_cv_func_strnlen_working=yes

(ただし、現時点では Win32 でしかコンパイルできません。)

于 2012-08-14T08:49:21.420 に答える