Die Make-Datei mit zwei wichtigsten Dateien
Ich bin neu in der Makefile-Sachen und will eine Frage stellen über Makefiles. Angenommen ich habe zwei separate Programme mit Ihren eigenen .c .h und main.c-Dateien. Keines der Programme verbunden sind. Ist es möglich, zwei ausführbare Dateien von solche Art von Programm? Wenn ja, wie ist es möglich? Ich habe dies ausprobiert, aber es scheiterte und ich bekam die folgende Fehlermeldung:
/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem makefile Sie können mehr als ein Ziel. Zum Beispiel:
Dann
make A
bauen würde Eine nurmake B
bauen würde B nurmake all
(oder nurmake
) bauen würde, beide.Wenn die beiden Programme haben ein Haupt.c-Datei, dann müssen Sie legen Sie Sie in zwei getrennte Verzeichnisse. Dann schreiben Sie ein makefile in jedem Verzeichnis und ein makefile im obersten Verzeichnis, dass eine Rekursion in diesen beiden submakefiles.
prog0/Makefile würde ungefähr so Aussehen:
Wiederholen Sie den Vorgang für prog1. Dann, im übergeordneten Verzeichnis, schreiben Sie eine rekursive makefile:
Müssen Sie rufen Sie Ihren linker zweimal, mit zwei verschiedenen Programmen.
Innerhalb eines Programms, wird nur eine "main" bestehen kann. Das problem wahrscheinlich ergibt sich aus der Kompilierung zwei '.c' - Dateien (jeweils mit einem Haupt -) in zwei".o " - Dateien, und dann versuchen, erstellen Sie eine ausführbare Datei aus '.o' Dateien. Das Rätsel (was nicht erlaubt ist), um dem compiler ist "das wichtigste, um mit zu beginnen"?
Einen schnellen Weg dieses Problem zu beheben, ist die Trennung aus dem Netz in die jeweiligen 'mainXXX.c' Dateien und stellen Sie sicher, dass nur ein 'mainXXX.o' Datei verwiesen wird pro Ausgabe-executable. Andere Lösungen gibt es auch. Handwerk, das Ihren Bedürfnissen entspricht.