Hier ist, wie man C-Code manuell unter Linux ohne zusätzliche Build-Tools kompiliert:
gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2
Wenn Ihr Projekt jedoch größer ist als ein paar Dateien, möchten Sie stattdessen ein Build-Tool verwenden (wie z.B. CMake, siehe Antwort von OregonGhost), um die Kompilierung vieler Dateien zu automatisieren und inkrementell zu gestalten. Wenn Sie ein Build-Tool verwenden, wird es gcc im Hintergrund ausführen, mit ähnlichen Argumenten wie oben. Es ist nützlich, die oben genannten Argumente zu verstehen, damit Sie Probleme beheben können, wenn Ihr automatisierter Build fehlschlägt.
Dies kompiliert code1.c und code2.c zu einem ausführbaren Binärprogramm prog, lädt .h-Dateien von ., includedir1 und includedir2 und lädt Bibliotheken (z.B. libuse1.so* und libuse2.so*) aus den Verzeichnissen libdir1 und libdir2, wobei die Bibliotheken use1 (entsprechend dem Dateinamen libuse1.so*) und use2 verwendet werden.
Wenn Sie undefinierte Symbolfehler in Ihren .c-Dateien erhalten, müssen Sie mehr -I
-Flags angeben. Wenn Sie undefinierte Symbolfehler in der .o-Datei erhalten, müssen Sie mehr -l
-Flags angeben. Wenn Sie kann -l... nicht finden
-Fehler erhalten, müssen Sie mehr -L
-Flags angeben.