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