compilar o i3 no cygwin - não é possível encontrar a biblioteca libiconv

1

Eu estou tentando compilar o i3 versão 4.14.1 no Cygwin 2.884 (Windows 7). Eu instalei a biblioteca libiconv necessária através da configuração do Cygwin, mas durante a execução do ./configure, recebi este erro:

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

Alguma pista do que posso fazer para ajudar a encontrar a biblioteca?

Eu tentei compilar a biblioteca libiconv-1.13.1 manualmente, mas eu encontrei alguns erros que não sei como resolver:

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

Eu tenho grepped o nome da função iconv_open () e encontrei na pasta cygwin

/usr/i686-pc-cygwin/sys-root/usr/include/iconv.h

e também na pasta libiconv

/usr/include/iconv.h

Mas, por algum motivo, o script de configuração não consegue encontrá-lo.

Aqui está meu config.log

Aqui está o meu iconv.h

Eu verifiquei onde está este arquivo libary inconv.h localizado no Ubuntu. Unlinke no cygwin está em / lib / while no cygwin está aqui / usr / include /. Tentei copiar a biblioteca para esse local, mas isso não ajudou também. Também consegui reproduzir o problema em minha home Windows 10.

EDIT: Aqui está o arquivo de configuração que estou usando: insira a descrição do link aqui

    
por msam 22.05.2018 / 16:59

1 resposta

1

O teste está falhando como

| 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'

está procurando por iconv_open na biblioteca libiconv , incorretamente. O código de teste deve usar o /usr/include/iconv.h fornecido onde há um

#define iconv_open libiconv_open

e a biblioteca cygwin libiconv exports:

$ 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

o símbolo libiconv_open . Você precisa corrigir o teste para usar iconv.h .

O teste é definido em configure.ac

AC_SEARCH_LIBS([iconv_open], [iconv], , [AC_MSG_FAILURE([cannot find the required iconv_open() function despite trying to link with -liconv])])

uma solução possível é alterá-lo em algo que testará as duas opções.

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])]))

Aviso de isenção de responsabilidade: não testado e você precisa executar autoreconf para reconstruir configure

    
por 23.05.2018 / 06:18