GNU Linker äquivalenter Befehl in OS X
Ich lesedas folgende Buch über Betriebssysteme. Auf Seite 43 verwenden sie den folgenden Befehl, um mit Anmerkungen versehenen Maschinencode in eine unformatierte Maschinencodedatei zu konvertieren:
$ ld -o basic.bin -Ttext 0x0 --oformat binary basic.o
Wenn ich diesen Befehl in meinem MacBook Pro (mit Mavericks) ausführe, erhalte ich:
ld: unknown option: -Ttext
Ich habe einige Nachforschungen angestellt und festgestellt, dass der Linker von OS X die Verwendung einer Skriptdatei als Linker-Skript nicht zulässt.
Einige andere Beiträge im Internet empfehlen die Verwendung des folgenden "richtigen" Formats:
$ ld -T text 0x0 --o format binary -o basic.bin basic.o
Obwohl es auch bei mir nicht geklappt hat.
Ich habe auch versucht, @ zu installierbinutils
viahomebrew
, aber es scheint nicht mit GNU Linker geliefert zu werden.
Der Befehl wird in Ubuntu 14.04 korrekt ausgeführt, aber ich möchte die Entwicklung nach Möglichkeit in OS X fortsetzen.
Gibt es eine Möglichkeit, mit dem OS X-Linker dieselben Ergebnisse zu erzielen, möglicherweise mit unterschiedlichen Flags?
AKTUALISIEREN
Ich konnte mit dem folgenden Befehl einen Bin generieren, mitgobjcopy
vonbinutils
:
$ gobjcopy -j .text -O binary basic.o basic.bin
Allerdings konnte ich im Code keine Möglichkeit finden, Labeladressen zu versetzen, wie ich es mit GNU ld mit @ konnt-Ttext 0x1000
beispielsweise
Ich habe es mit @ versuc--set-start <hex>
ohne glück:
$ gobjcopy -j .text --set-start 0x1000 -O binary basic.o basic.bin