2009-05-13 7 views
2

Was ist der beste Weg, Programme mit DMD auf einer 64-Bit-Maschine zu kompilieren? Es muss nicht auf 64Bit-Code kompiliert werden. Ich kenne GDC, möchte aber auch mit D2 arbeiten. Es gibt auch Chroot, aber ich hoffe auf einen einfacheren Weg.Kompilieren mit DMD auf 64-Bit-Linux oder Verknüpfen mit 32-Bit-Objektdateien

Das eigentliche Problem ist nicht mit Kompilierung, aber Verknüpfung. DMD fordert GCC auf, Verknüpfungen mit Systembibliotheken durchzuführen. Könnte ich DMD dazu bringen, GCC-Link gegen 32-Bit-Bibliothek zu haben? Oder wie würde ich es manuell machen?

Ich habe bereits die ia32-Bibliotheken installiert, weshalb ich DMD ausführen kann.

Antwort

5

Bitten Sie GCC, 32-Bit-Verbindung durchzuführen, indem Sie es '-m32' Flag übergeben.

Es scheint, dass DMDgcc nicht aufruft, um die Verbindung auszuführen, sondern ld direkt aufruft. Der entsprechende ld Schalter ist '-melf_i386', und anscheinend die Möglichkeit, DMD diese Option an den Linker zu übergeben ist mit '-L-melf_i386' Flag.

Beachten Sie, dass viele Systeme Laufzeit- und Entwicklungsbibliotheken trennen. 32-Bit-Laufzeitpakete werden fast immer standardmäßig installiert, 32-Bit-Entwicklungspakete jedoch nicht.

Sie benötigen Entwicklung 32-Bit-Pakete zum Erstellen von 32-Bit-Programmen. Die Tatsache, dass 32-Bit DMD ausgeführt werden kann, beweist nicht, dass Sie über alle 32-Bit-Bibliotheken verfügen, die Sie benötigen, um 32-Bit-Programme zu erstellen.

+0

Vielen Dank. Und um die Antwort zu vervollständigen, ist das benötigte Paket für die Entwicklung gcc-multilib. Auch der Schalter, den ich benutzte, war -melf_i386 und dmd vorwärts zu gcc -L-melf_i386. Könnten Sie Ihre Antwort aktualisieren? –