Binary Files mit C-Compiler gcc erstellen
-
Guten Abend zusammen ,
ich versuche gerade verzweifelt meinen Sourcecode in ein "plain binary file" zu kompilieren. Ich habe im Internet ein Tutorial gefunden und wollte die Praxisbeispiele einfach mal selbst austesten, um es mit eigenen Augen nachvollziehen zu können. Leider bekomme ich nicht einmal den ersten im Tutorial beschriebenen Kompilieraufruf hin. Es handelt sich dabei um
int main() {}
^^
Darin steht, man soll diesen mehr als simplen Funktionsrumpf mit
gcc -c test.c
ld -o test -Ttext 0x0 -e main test.o
objcopy -R .note -R .comment -S -O binary test test.binzu einer Binärdatei kompilieren. Funktioniert bei mir leider nicht
die erste Kompilieranforderung an den gcc macht er mir noch einwandfrei. Wäre ja auch gelacht ^^. Aber bei der zweiten Anforderung an den Linker, meckert mir der ld folgendes vor:
test.o:test.c: (.text+0x21): undefined reference to '_alloca'
test.o:test.c: (.text+0x26): undefined reference to '__main'Was mache ich nur falsch ? Liegt es vllt. daran, dass ich unter Windows kompiliere (mein binutils, gcc, ld, etc. sind Win32-Versionen) ? Soweit ich mich aber erinnern kann, habe ich das unter Linux auch schon mal ausprobiert und ich habe genau dieselbe Fehlermeldung bekommen.
Ach ja: Mein Ziel ist es eine KOMPLETTE Binärdatei zu erstellen (keine .exe, a.out oder Sonstiges), damit ich mir mal ein Bild von C/C++ auf Assembler-Ebene mit disasm erstellen kann.
Bitte um Hilfeeeee
Grüße, Xzi-bit
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
das, was du erreichen willst, schaffst du auch mit objdump:
objdump --disassemble test.owenn du unbedingt eine binäre datei erzeugen willst, probier beim gcc aufruf die option "-fno-hosted". ich muss aber zugeben, dass ich mit gcc und den binutils in windows keine erfahrung habe. klappt "-fno-hosted" nicht, probier "-ffreestanding".
ich denke, du kannst auch die option "--oformat" für ld verwenden, um das output format auf binär zu stellen. das spart das objcopy.
-
Hey, super ! Danke für den Tipp.
Werd ich dann gleich mals ausprobieren...^^Grüße, Xzi-bit