Cygwin 2.884(Windows 7)でi3バージョン4.14.1をコンパイルしようとしています。 Cygwinインストーラを介して必要なlibiconvライブラリをインストールしましたが、./configureを実行すると、次のエラーが発生します。
configure: error: in `/home/msamec/Downloads/i3-4.14.1/x86_64-unknown cygwin':
configure: error: cannot find the required iconv_open() function despite trying
to link with -liconv
See `config.log' for more details
図書館を見つけるのに何ができるのかご存知ですか?
libiconv-1.13.1ライブラリを手動でコンパイルしようとしていますが、解決策がわからないいくつかのエラーが発生します。
libtool: link: /bin/gcc -shared .libs/localcharset.o .libs/relocatable.o -o .libs/cygcharset-1.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libcharset.dll.a
.libs/relocatable.o: In function `DllMain':
/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib/./relocatable.c:324: undefined reference to `cygwin_conv_to_posix_path'
/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib/./relocatable.c:324:(.text+0x113): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `cygwin_conv_to_posix_path'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:59: libcharset.la] Error 1
make[2]: Leaving directory '/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib'
make[1]: *** [Makefile:34: all] Error 2
make[1]: Leaving directory '/home/msamec/Downloads/libiconv-1.13.1/libcharset'
make: *** [Makefile:42: lib/localcharset.h] Error 2
iconv_open() 関数名を grep して cygwin フォルダで見つけました。
/usr/i686-pc-cygwin/sys-root/usr/include/iconv.h
また、libiconvフォルダにもあります。
/usr/include/iconv.h
ただし、何らかの理由で構成スクリプトはこれを見つけることができません。
これは私のものです。構成ログ
これは私のiconv.hです。 https://gist.github.com/anonymous/0b117d1680954d591f989256b508bfc5
このライブラリファイルinconv.hがUbuntuのどこにあるかを確認しました。 cygwin unlinkでは/lib/にあり、cygwinでは/usr/include/にあります。ライブラリをその場所にコピーしてみましたが、それも役に立ちませんでした。自宅のWindows 10でも問題を再現できました。
編集:これは私が使用している設定ファイルです。ここにリンクの説明を入力してください
答え1
テストは次のように失敗しました。
| char iconv_open ();
| int
| main ()
| {
| return iconv_open ();
| ;
| return 0;
| }
configure:6391: /bin/gcc -o conftest.exe conftest.c -liconv -lev >&5
/tmp/ccz9hxNr.o:conftest.c:(.text+0xe): undefined reference to `iconv_open'
/tmp/ccz9hxNr.o:conftest.c:(.text+0xe): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `iconv_open'
iconv_open
図書館で探してみましたがlibiconv
間違っていました。テストコードは/usr/include/iconv.h
提供されています
#define iconv_open libiconv_open
cygwinライブラリのlibiconv
エクスポート:
$ objdump -x /usr/lib/libiconv.dll.a | grep iconv_open
[ 5](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 libiconv_open_into
[ 6](sec 3)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 __imp_libiconv_open_into
[ 5](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 libiconv_open
[ 6](sec 3)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000000 __imp_libiconv_open
シンボルlibiconv_open
。これを使用するにはテストを変更する必要がありますiconv.h
。
テストは以下で定義されます。configure.ac
AC_SEARCH_LIBS([iconv_open], [iconv], , [AC_MSG_FAILURE([cannot find the required iconv_open() function despite trying to link with -liconv])])
考えられる解決策は、両方のオプションをテストできるものに変更することです。
AC_SEARCH_LIBS([iconv_open],[iconv],,
AC_SEARCH_LIBS([libiconv_open],[iconv],,[AC_MSG_FAILURE([cannot find the required iconv_open() function despite trying to link with -liconv])]))
autoreconf
免責事項:テストされていないため、再構築するには実行する必要があります。configure