Связывание кода C ++ с помощью «gcc» (без g ++)
Вопрос
Привет всем: quick question: Я нахожусь в ситуации, когда было бы полезно сгенерировать мой исполняемый файл C ++, используя только 'gcc' (без g ++). Причина этого заключается в том, что я должен отправить код на автоматический сервер отправки, который не распознает команду «g ++» (или, в данном случае, «c ++»).
В моих экспериментах, пока я компилирую , gcc работает хорошо. Проблема в том, что, когда я пытаюсь связать сгенерированные объектные файлы, это испортилось. Теперь, основываясь на том, что я понял из справочной страницы gcc (возможно, я не в порядке, так что скажите мне, если это так), g ++ в основном gcc, но он связывает библиотеку C ++.
Если это так, как я могу (если возможно) явно связать библиотеку C ++ без , используя команду g ++ (или c ++)?
РЕДАКТИРОВАТЬ . Я добавляю make-файл, чтобы лучше проиллюстрировать проблему:
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/*
Решение
Вы можете связать стандартную библиотеку c ++ с флагом -l
для gcc:
gcc cplusplus.o -lstdc++ -o myexe
Другие советы
Если вы запускаете g ++ с параметром " -v " опция, она покажет, какую команду и опции она использует. Вы должны быть в состоянии вывести правильную командную строку gcc оттуда.