Verknüpfen Sie eine dynamisch verknüpfte ausführbare Datei mit ld

ich versuche, erstellen Sie eine dynamisch verknüpfte ausführbare Datei (elf_i386) ohne gcc. Das Programm ist sehr einfach (nur eine printf -)...hier die Befehle:

$ gcc -c simple.c
$ ld -o simple -dynamic-linker /lib/ld-linux.so.2 --entry main /usr/lib/crt1.o /usr/lib/crti.o simple.o -lc /usr/lib/crtn.o

Die ausführbare Datei erstellt wird, und auch Kommando file und ldd-Befehl zeigen Sie den rechten Ausgang...
Jedoch wenn ich das Programm starten nach dem Aufruf von printf bekomme ich einen segmentation fault...ich habe geprüft, die mit objdump Sie die ausführbare Datei und ich denke, das problem ist über die dtors...scheint, dass das kompilieren mit:

$gcc -o simple simple.c

einen Abschnitt .dtors vorhanden ist, während er nicht anwesend ist in die ausführbare Datei erstellt, die direkt mit ld 🙁

Irgendwelche Ideen?

  • Sie müssen zeigen Sie Ihren code, wenn Sie wollen, dass jemand zu Hilfe.
InformationsquelleAutor MirkoBanchi | 2011-04-28
Schreibe einen Kommentar