Kompilieren Sie mehrere C-Dateien mit make

Lesezeit: 2 Minuten

(Ich verwende Linux Ubuntu 9.10, daher lautet die Erweiterung für eine ausführbare Datei executablefile.out.) Ich steige gerade in die modulare Programmierung (Programmierung mit mehreren Dateien) in C ein und möchte wissen, wie mehrere Dateien in einem einzigen Makefile kompiliert werden. Was wäre zum Beispiel das Makefile, um diese Dateien zu kompilieren: main.c, dbAdapter.c, dbAdapter.h? (Übrigens, wenn Sie es noch nicht herausgefunden haben, die main-Funktion ist in main.c) Könnte auch jemand einen Link zur Dokumentation eines Makefiles posten?

Die geposteten Links sind alle gut. Für Ihren speziellen Fall können Sie dies versuchen. Im Wesentlichen folgen alle Makefiles diesem Muster. Alles andere sind Verknüpfungen und Makros.

program: main.o dbAdapter.o
   gcc -o program main.o dbAdapter.o

main.o: main.c dbAdapter.h
   gcc -c main.c

dbAdapter.o dbAdapter.c dbAdapter.h
   gcc -c dbAdapter.c

Das Wichtigste hier ist, dass das Makefile die Regeln der Reihe nach betrachtet und erstellt, wenn bestimmte Elemente benötigt werden.

Es wird sich zuerst das Programm ansehen und feststellen, dass zum Erstellen des Programms etwas namens main.o und dbAdapter.o benötigt wird.

Es findet dann main.o. Um jedoch main.o zu erstellen, werden main.c und dbAdapter.h benötigt (ich nehme an, dbAdapter.h ist in main.c enthalten).

Es wird diese Quellen verwenden, um main.o zu erstellen, indem es mit gcc kompiliert wird. Das -c gibt an, dass wir nur kompilieren möchten.

Dasselbe macht es mit dbAdapter.o. Wenn es diese beiden Objektdateien hat, ist es bereit, sie zu verknüpfen. Auch für diesen Schritt wird der gcc-Compiler verwendet. Das -o zeigt an, dass wir eine Datei namens program erstellen.

  • … außer dass Sie den Compiler nicht fest codieren sollten und die vordefinierten Build-Regeln nutzen sollten … siehe mein Tutorial.

    – Michael Aaron Safyan

    9. April 2010 um 4:26 Uhr

  • Naja natürlich hast du recht. Aber das OP ist relativ neu für Makefiles und ich wollte nur den zugrunde liegenden Prozess ohne Umweg zeigen.

    – adurisch

    9. April 2010 um 12:43 Uhr

  • “Aber das OP ist relativ neu für Makefiles” – was Sie ihm auf den richtigen Weg bringen sollten, anstatt häufige Fehler in sein erstes Beispiel zu stecken.

    – mk12

    15. August 2012 um 1:58 Uhr


  • Könnte grob und hart codiert sein, aber es hat mir sehr geholfen zu sehen, was ich tun musste. Gehen Sie, bevor Sie laufen!

    – Mike John

    22. September 2013 um 22:59 Uhr

  • Ich stimme Mike John vollkommen zu und Michael Aaron Safjan. Holen Sie sich das Muster, aber lernen Sie dann, es richtig zu machen!

    – Schachnerd

    10. Februar 2016 um 18:35 Uhr

GNU-Make sollte das sein, wonach du suchst.

1376320cookie-checkKompilieren Sie mehrere C-Dateien mit make

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy