Kompilieren mit DMD auf 64-Bit-Linux oder Verknüpfung mit 32-Bit-Objektdateien
Frage
Was ist der beste Weg, um Programme mit DMD auf einer 64-Bit-Maschine zu kompilieren? Es muss nicht auf 64-Bit-Code kompilieren. Ich weiß, über GDC, sondern will auch mit D2 arbeiten. Es gibt auch chroot, aber für eine einfachere Art und Weise ist die Hoffnung.
Das eigentliche Problem ist nicht mit dem Kompilieren, sondern verknüpfen. DMD fordert GCC mit Systembibliotheken ausführen zu verknüpfen. Kann ich DMD GCC Link gegen 32-Bit-Bibliothek haben? Oder wie würde ich es tun manuell?
Ich habe bereits die ia32-Bibliotheken installiert, weshalb ich DMD laufen kann.
Lösung
Stellen Sie GCC 32-Bit-Link auszuführen, indem es '-m32'
Flagge übergeben.
Es scheint, dass DMD
nicht gcc
nicht aufrufen, um den Link zu erfüllen, sondern ruft ld
direkt. Der äquivalente ld
Schalter ist '-melf_i386'
, und anscheinend die Art und Weise DMD
diese Option an den Linker übergeben zu machen ist mit '-L-melf_i386'
Flagge.
Beachten Sie, dass viele Systeme trennen Laufzeit- und Entwicklungsbibliotheken. 32-Bit-Laufzeit-Packages ist fast immer standardmäßig installiert, aber 32-Bit-Entwicklungspakete können nicht sein.
Sie müssen Entwicklung 32-Bit-Pakete 32-Bit-Programme zu bauen. Die Tatsache, dass 32-Bit-DMD
laufen kann an sich nicht beweisen, dass Sie die alle 32-Bit-Bibliotheken haben Sie benötigen, um 32-Bit-Programme zu bauen.