Связывание кода C ++ с помощью «gcc» (без g ++)

StackOverflow https://stackoverflow.com/questions/1001535

  •  05-07-2019
  •  | 
  •  

Вопрос

Привет всем: 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 оттуда.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top