Mehrere Dateien kompilieren
Erstellen Sie ein Programm aus mehreren Dateien.
Mehrere Dateien kompilieren ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Von der Quelle zum Programm
Die Umwandlung mehrerer C-Quelldateien in eine ausführbare Datei erfolgt in zwei Phasen: Kompilieren und Linken.
Jede .c-Datei wird separat in eine Objektdatei kompiliert. Anschließend führt der Linker alle Objektdateien zusammen, löst die Verweise zwischen ihnen auf und erzeugt daraus ein ausführbares Programm.
Der Build mit einem Befehl
Bei der einfachsten Vorgehensweise übergeben Sie alle Quelldateien gleichzeitig an gcc. Der Compiler kompiliert jede Datei und linkt sie anschließend automatisch.
Mit der Option -o benennen Sie das Ausgabeprogramm. Listen Sie alle .c-Dateien auf; Header werden über #include eingebunden und hier nicht aufgeführt.
gcc main.c math_utils.c -o appSeparate Kompilierung
Bei größeren Projekten kompilieren Sie jede Datei mit -c in eine Objektdatei. Dabei entsteht eine .o-Datei, aber es wird nicht gelinkt.
Durch die separate Kompilierung müssen Sie bei einer Änderung nur diese eine Quelldatei neu kompilieren. Das beschleunigt große Builds.
gcc -c main.c /* produces main.o */
gcc -c math_utils.c /* produces math_utils.o */Der Link-Schritt
Sobald Sie Objektdateien haben, linken Sie sie zu einer ausführbaren Datei. Hier fungiert gcc als Linker, führt die Objektdateien zusammen und löst die dateiübergreifenden Symbole auf.
Diesmal verwenden Sie kein -c, weil Sie ein fertiges Programm und keine weitere Objektdatei erzeugen möchten.
gcc main.o math_utils.o -o appWas der Linker macht
Der Linker ordnet jede Verwendung eines Symbols seiner Definition zu.
Wenn main.o add aufruft, findet der Linker die Definition von add in math_utils.o und verbindet beide. Außerdem bindet er den benötigten Code der Standardbibliothek ein.
Fehler wegen undefinierter Verweise
Wenn Sie beim Linken eine Objektdatei vergessen, kann der Linker keine Definition finden und meldet einen undefinierten Verweis.
Dies ist ein Fehler beim Linken, kein Kompilierfehler: Jede Datei wurde erfolgreich kompiliert, aber eine benötigte Definition fehlte im abschließenden Befehl.
gcc main.o -o app
/* undefined reference to `add' */
/* fix: include math_utils.o */Nützliche Warnoptionen
Kompilieren Sie immer mit aktivierten Warnungen. -Wall und -Wextra machen mögliche Fehler frühzeitig sichtbar.
Mit -std=c11 wählen Sie einen Sprachstandard aus, sodass das Verhalten bei verschiedenen Compilern vorhersehbar ist. Diese Optionen funktionieren sowohl bei der Kompilierung in einem Schritt als auch bei der separaten Kompilierung.
gcc -Wall -Wextra -std=c11 -c main.c
gcc -Wall -Wextra -std=c11 -c math_utils.c
gcc main.o math_utils.o -o appInclude-Pfade
Wenn sich Header in einem anderen Verzeichnis befinden, teilen Sie dem Compiler mit -I mit, wo er suchen soll.
Beispielsweise fügt -Iinclude einen Ordner include/ zum Suchpfad hinzu. Dadurch wird #include "math_utils.h" auch aus einem anderen Ordner aufgelöst.
gcc -Iinclude -c src/main.c -o build/main.oWarum die Neukompilierung wichtig ist
Die separate Kompilierung spielt ihre Stärke aus, wenn sich nur eine Datei ändert. Sie kompilieren nur das Objekt dieser Datei neu und linken anschließend erneut.
Wenn Sie jedoch einen Header bearbeiten, muss jede Quelldatei, die ihn einbindet, neu kompiliert werden, weil der Text des Headers Bestandteil jeder dieser Dateien ist.
/* edited math_utils.c only */
gcc -c math_utils.c
gcc main.o math_utils.o -o appAutomatisieren mit make
Befehle von Hand einzugeben wird schnell mühsam. Ein Makefile speichert die Regeln und erstellt nur das neu, was sich geändert hat.
Dieses minimale Beispiel linkt zwei Objektdateien zu app; make verfolgt die Zeitstempel der Dateien und entscheidet, was neu kompiliert werden muss.
app: main.o math_utils.o
gcc main.o math_utils.o -o app
main.o: main.c math_utils.h
gcc -c main.cZusammenfassung des vollständigen Builds
Hier sehen Sie den gesamten Ablauf für ein kleines Projekt – von den Objektdateien bis zum fertigen Programm mit aktivierten Warnungen.
Kompilieren Sie jede Quelldatei und linken Sie anschließend die Objektdateien. Führen Sie das Ergebnis aus, um zu bestätigen, dass es vollständig funktioniert.
gcc -Wall -c main.c
gcc -Wall -c math_utils.c
gcc main.o math_utils.o -o app
./appKurze Überprüfung
Überprüfen Sie Ihr Verständnis des Build-Prozesses mit mehreren Dateien.
Zusammenfassung
Sie haben gelernt, jede .c-Datei mit -c in eine Objektdatei zu kompilieren und anschließend die Objektdateien zu einem Programm zu linken. Verwenden Sie -Wall für Warnungen und -I für Include-Pfade.
Undefinierte Verweise bedeuten, dass beim Linken eine Objektdatei fehlt. Werkzeuge wie make automatisieren die erneute Erstellung nur der geänderten Dateien.
Häufig gestellte Fragen
Ist die Lektion „Mehrere Dateien kompilieren“ kostenlos?
Ja — der vollständige Text von „Mehrere Dateien kompilieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Mehrere Dateien kompilieren“?
Erstellen Sie ein Programm aus mehreren Dateien. Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C Academy zu starten?
Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Mehrere Dateien kompilieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?
Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Header- und Quelldateien
- Include-Guards
- extern und Linkage
- Mehrere Dateien kompilieren