Compilando com DMD em 64bit Linux ou vinculação com arquivos objeto de 32 bits
Pergunta
Qual é a melhor forma de compilar programas com DMD em uma máquina de 64 bits? Ele não precisa compilar o código de 64 bits. Eu sei sobre GDC, mas quero trabalhar com D2 também. Há também chroot, mas estou esperando por uma maneira mais simples.
O problema real não é com a compilação, mas ligando. chamadas DMD no GCC para realizar a ligação com bibliotecas do sistema. Eu poderia começar DMD ter ligação GCC contra a biblioteca de 32 bits? Ou como eu iria fazê-lo manualmente?
Já tenho os ia32 bibliotecas instalado é por isso que eu posso correr DMD.
Solução
Pergunte GCC para executar ligação de 32 bits, passando-'-m32'
bandeira.
Parece que DMD
não invoca gcc
para executar o link, mas sim invoca ld
diretamente. O interruptor ld
equivalente é '-melf_i386'
, e, aparentemente, a maneira de passagem DMD
fazer essa opção para o vinculador é com a bandeira '-L-melf_i386'
.
Note que muitos sistemas separar bibliotecas de execução e desenvolvimento. pacotes de tempo de execução de 32 bits são quase sempre instalado por padrão, mas pacotes de desenvolvimento de 32 bits não pode ser.
Você precisa desenvolvimento pacotes de 32 bits para construir programas de 32 bits. O fato de que 32 bits DMD
pode ser executado não em si provar que você tem todas as bibliotecas de 32 bits que você precisa, a fim de programas de 32 bits construção.