Ich schreibe ein einfaches Makefile-Projekt.So verknüpfen Sie Objekte aus verschiedenen Verzeichnissen (running ld)
Ich versuche, das Programm in zwei Schritten aufzubauen:
- Kompilierung Quelldateien und Objektdateien in einem anderen Verzeichnis
- Link die Objekte in eine ausführbare
etwas sparen betrachten einfach wie:
all:
gcc -o ~/some_dir/main.o -c main.c
ld -o my_program main.o
das Problem ist der Aufruf directo ry ist nicht "~/some_dir" so ld findet die Objektdatei nicht ... wie kann ich "some_dir" in den ld Suchpfad aufnehmen?
In der globaleren Perspektive habe ich Objektdateien in verschiedenen Verzeichnissen und ich möchte sie alle zusammen mit einer einzigen Linker-Befehlsdatei verknüpfen.
Danke.
Um, indem Sie einen verwendbaren Pfad zu dem zu verknüpfenden Objekt angeben? Wie * sonst * würdest du es tun? Aber in jedem Fall ist es am besten, 'gcc' als Linker-Treiber zu verwenden, anstatt den Linker direkt aufzurufen:' gcc -o my_program ~/some_dir/main.o'. –
Anstatt Pfade zu verwenden, die mit dem Home-Verzeichnis des aktuellen Benutzers ('~/some_dir') verknüpft sind, wäre es viel sinnvoller, Builddateien relativ zum Arbeitsverzeichnis für den Build anzulegen und Quelldateien relativ zum Verzeichnis zu suchen das Makefile enthält. –