„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kompiliere und verknüpfe ich mehrere CPP-Dateien zu einer einzigen Binärdatei?

Wie kompiliere und verknüpfe ich mehrere CPP-Dateien zu einer einzigen Binärdatei?

Veröffentlicht am 11.11.2024
Durchsuche:685

How to Compile and Link Multiple .cpp Files into a Single Binary?

So kompilieren und verknüpfen Sie mehrere .cpp-Dateien zu einer Binärdatei

Dieser Artikel befasst sich mit der Frage des Kompilierens mehrerer .cpp-Dateien .o-Objekte und deren Verknüpfung zu einer einzigen Binärdatei.

Makefile Konfiguration

Um dies zu erreichen, kann ein Makefile mit folgendem Inhalt verwendet werden:

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g   $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g   $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

Erläuterung:

  • SRC_DIR: Gibt an das Verzeichnis, das die Quell-.cpp enthält Dateien.
  • OBJ_DIR: Gibt das Verzeichnis an, in dem die .o-Objekte erstellt werden.
  • SRC_FILES: Eine Liste aller .cpp-Dateien in das SRC_DIR.
  • OBJ_FILES: Eine Liste aller .o Objekte, die generiert werden.
  • main.exe: Der Name der endgültigen Binärdatei.
  • LDFLAGS: Linker-Flags.
  • CPPFLAGS: C-Präprozessor flags.
  • CXXFLAGS: C-Compiler-Flags.

Dependency Graph Generation

Zum automatischen Generieren von Abhängigkeiten zwischen Quellen und Objektdateien, fügen Sie Folgendes zum Makefile hinzu:

CXXFLAGS  = -MMD
-include $(OBJ_FILES:.o=.d)

Best Practices

Dieser Ansatz wird häufig zum Kompilieren und Verknüpfen mehrerer C-Dateien verwendet. Es ist jedoch wichtig, das GNU Make-Handbuch für zusätzliche Anleitungen und erweiterte Optionen zu konsultieren.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3