Compilar con DMD en Linux de 64 bits o enlace con ficheros de objetos de 32 bits
Pregunta
¿Cuál es la mejor manera de compilar programas con DMD en una máquina de 64 bits? No necesita compilar a código de 64 bits. Yo sé de GDC, pero quiero trabajar con D2 también. También hay chroot, pero estoy esperando una manera más sencilla.
El problema real no es con la compilación, pero la vinculación. DMD pide a GCC para realizar la vinculación con las bibliotecas del sistema. Que podría conseguir a DMD tiene enlace GCC contra la biblioteca de 32 bits? O cómo lo haría manualmente?
Ya tengo las bibliotecas IA32 instalados por lo que puedo correr DMD.
Solución
Haz GCC para realizar enlace de 32 bits pasándolo '-m32'
bandera.
Parece que no invoque DMD
gcc
para realizar el enlace, sino más bien ld
invoca directamente. El interruptor es equivalente '-melf_i386'
'-L-melf_i386'
, y al parecer la manera de hacer <=> pasar esa opción para el enlazador es con <=> bandera.
Tenga en cuenta que muchos sistemas diferentes bibliotecas de ejecución y desarrollo. paquetes de tiempo de ejecución de 32 bits casi siempre se instalan de forma predeterminada, pero los paquetes de desarrollo de 32 bits pueden no ser.
Es necesario paquetes de desarrollo de 32 bits para construir programas de 32 bits. El hecho de que el 32 bits <=> puede ejecutar por sí mismo no probar que tiene todas las bibliotecas de 32 bits que necesita con el fin de construir programas de 32 bits.