Связывание кода 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/*
2 ответа
Вы можете связать стандартную библиотеку C++ с -l
флаг для gcc:
gcc cplusplus.o -lstdc++ -o myexe
Если вы запустите g++ с параметром "-v", он покажет, какие команды и параметры он использует. Вы должны быть в состоянии вывести правильную командную строку gcc оттуда.