Hallo alle: schnelle Frage: Ich bin in einer Situation, in der es sinnvoll wäre, meine C++ - Programmdatei nur mit 'gcc' (ohne g ++) zu generieren. Der Grund dafür ist, dass ich den Code an einen Server für automatische Übermittlung senden muss, der den Befehl "g ++" (oder "C++") nicht erkennt.Verknüpfen von C++ - Code mit 'gcc' (ohne g ++)
In meinen Experimenten, während ich bin Kompilierung gcc funktioniert gut. Problem ist, wenn ich versuche, die generierten Objektdateien zu verknüpfen, wird es durcheinander gebracht. Nun, basierend auf dem, was ich von der gcc man-Seite verstehe (ich bin vielleicht weit weg, also sag mir, wenn ich es bin), ist g ++ im Grunde genommen gcc, aber es verbindet die C++ - Bibliothek.
Wenn das stimmt, wie kann ich (wenn möglich) explizit die C++ - Bibliothek ohne mit dem Befehl g ++ (oder C++) verknüpfen?
EDIT: ich hinzufüge, die Make-Datei 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/*
gcc und g ++ zeigen buchstäblich auf die gleiche ausführbare Datei. Der einzige Unterschied sind die Flags, die an das Backend übergeben werden. –
Korrigieren Sie den automatischen Übermittlungsserver! –
War keine Option = D –