cygwinでi3をコンパイルする - libiconvライブラリが見つかりません

cygwinでi3をコンパイルする - libiconvライブラリが見つかりません

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

おすすめ記事