Construindo libiconv no ambiente mingw de 64 bits

1

Estou tentando organizar um ambiente de gnu de 64 bits no meu PC com Windows. Eu construí o ambiente mingw de 64 bits e continuei a construir as bibliotecas que precisava depois.

Ao criar o libiconv, tentei seguir esta instrução , que equivalia a configurar com o fornecimento do parâmetro --host para a configuração do cipt. No entanto, a criação falhou com o seguinte erro:

c:/mingw_mine/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-min gw32/bin/ld.exe: i386 architecture of input file '.libs/libiconv.res.o' is incom patible with i386:x86-64 output

O que deu errado?

Alguns detalhes necessários: eu uso msys pré-compilados de 32 bits para shell. Inclui o número de programas, make , install e gcc incluídos. Para evitar o uso incorreto de gcc , primeiro adicionei os caminhos necessários para PATH, C_INCLUDE_PATH e CPLUS_INCLUDE_PATH e, em seguida, executei a configuração com:

$ ../src/configure --prefix=/c/temp/gcc/dest --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 CPPFLAGS="-Wall -I/c/mingw_mine/include" LDFLAGS="-L/c/mingw_mine/lib"

Tanto quanto eu poderia dizer, o script de configuração detectou o compilador que eu queria corretamente; tudo em toda a configuração passou sem um problema. De onde vieram os binários i386? Mesmo que a configuração detectasse arquitetura com uname ( /bin/uname em msys de 32 bits), por que seria importante se o host fosse definido explicitamente?

    
por Srv19 09.09.2015 / 13:41

1 resposta

0

Após investigação, resolvi o problema. Passo a passo:

  1. Eu estava recebendo binários errados como saída do programa windres . A verificação com which me deu /bin/windres , ou seja, um do ambiente msys de 32 bits.
  2. Eu compilei o bintools para o mingw de 64 bits, então eu tive windres de 64 bits na pasta /mingw/bin . No entanto, ele não foi usado no processo de criação.
  3. Depois de verificar como foi o processo de configuração, observei linhas como

checking for x86_64-w64-mingw32-windres.... no

checking for windres.... windres

  1. Eu criei e coloquei na pasta / mingw do arquivo de ambiente msys chamado x86_64-w64-mingw32-windres com o seguinte conteúdo:

    #! / bin / sh script="$ 0" basename="$ (dirname $ script)" $ basename / windres "$ @"

Após a reconfiguração, a compilação passou sem problemas.

    
por 28.09.2015 / 11:52

Tags