Frage

Hallo alle: kurze Frage: Ich bin in einer Situation, wo es nützlich wäre, meine C ++ ausführbaren Datei zu erzeugen, nur ‚gcc‘ mit (ohne g ++). Grund dafür ist, dass ich den Code an einen automatischen Übermittlung Server einreichen, die nicht die erkennt ‚g ++‘ (oder ‚c ++‘, was das betrifft) Befehl.

Bei meinen Versuchen, während ich bin Kompilieren gcc gut funktioniert. Das Problem ist, wenn ich versuche, die generierten Objektdateien zu verknüpfen wird es vermasselt. Nun, auf dem, was ich von der gcc Manpage verstehen (ich kann weg sein, so mir sagen, ob ich bin), g ++ ist im Grunde gcc, aber es verbindet die C ++ Bibliothek.

Wenn das wahr ist, wie kann ich (wenn möglich) verknüpfen explizit die C ++ Bibliothek ohne mit dem g ++ (oder C ++) Befehl?

EDIT: Ich bin die Make-Datei hinzugefügt, das Problem besser zu veranschaulichen:

COMPILER = gcc
CFLAGS = -Wall -g -x c++

# MODULE COMPILATION
model: modules/model.h modules/sources/model.cpp
    $(COMPILER) $(CFLAGS) -c modules/sources/model.cpp -o obj/model.o

algorithms: modules/algorithms.h modules/sources/algorithms.cpp
    $(COMPILER) $(CFLAGS) -c modules/sources/algorithms.cpp -o obj/algorithms.o

io: modules/io.h modules/sources/io.cpp
    $(COMPILER) $(CFLAGS) -c modules/sources/io.cpp -o obj/io.o

stopwatch: modules/stopwatch.h modules/sources/stopwatch.cpp
    $(COMPILER) $(CFLAGS) -c modules/sources/stopwatch.cpp -o obj/stopwatch.o

# EXECUTABLE GENERATION
exe: model algorithms io stopwatch
    $(COMPILER) $(CFLAGS) main.cpp obj/model.o obj/algorithms.o obj/io.o obj/stopwatch.o -o bin/process

# DEFAULT TEST CASE
run: exe
    ./bin/process -i data/nasa_small.log -a data/nasa_small.access -s data/nasa_small.stack

# CLEANING ROUTINE
clean:
    rm -f obj/*
War es hilfreich?

Lösung

Sie können die Standard-C-Verbindung ++ Bibliothek mit dem -l Flag auf gcc:

gcc cplusplus.o -lstdc++ -o myexe

Andere Tipps

Wenn Sie laufen g ++ mit der Option „-v“, wird es zeigen, was Befehl und Optionen es verwendet. Sie sollten die richtige gcc Kommandozeile von dort abzuleiten können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top