Wie kann man ein Gas-Assembler-Programm, das die C-Standardbibliothek verwendet, mit ld ohne gcc verknüpfen?

Als Übung, um genauer zu lernen, wie C-Programme funktionieren und welches Mindestmaß an Inhalten vorhanden sein muss, damit ein Programm libc verwenden kann, habe ich es mir zur Aufgabe gemacht, zu versuchen, hauptsächlich in x86-Assemblys mit gas und ld zu programmieren.

Als lustige kleine Herausforderung habe ich erfolgreich mehrere Programme zusammengestellt und verknüpft, die mit verschiedenen selbst erstellten dynamischen Bibliotheken verknüpft sind. Es ist mir jedoch nicht gelungen, ein Programm von Grund auf neu zu programmieren, um libc-Funktionsaufrufe ohne direkte Verwendung von gcc zu verwenden.

Ich verstehe die Aufrufkonventionen der einzelnen c-Bibliotheksfunktionen und habe Programme, die mit objdump und readelf aus gcc kompiliert wurden, gründlich geprüft, bin aber nicht weiter gekommen, welche Informationen in eine Gasassemblierungsdatei aufgenommen werden sollen und welche Parameter zu verwenden sind Rufen Sie in ld auf, um eine Verbindung zu libc herzustellen. Hat jemand einen Einblick dazu?

Ich verwende Linux auf einem x86-Computer.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage