24

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

Привет всем: quick question: Я нахожусь в ситуации, когда было бы полезно сгенерировать мой исполняемый файл C ++, используя только "gcc". (без g ++). Причина этого заключается в том, что я должен отправить код на сервер автоматической отправки, который не распознает "g ++". (или 'c ++', в этом отношении) команда.

В моих экспериментах, пока яcompiling GCC работает хорошо. Проблема в том, что, когда я пытаюсь связать сгенерированные объектные файлы, это испортилось. Теперь, основываясь на том, что я понял из man-страницы gcc (возможно, я не в порядке, так что скажите мне, если это так), g ++ в основном gcc, но он связывает библиотеку C ++.

Если это правда, как я могу (если возможно) явно связать библиотеку C ++without используя команду g ++ (или c ++)?

EDIT: Я добавляю 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/*
  • Error: User Rate Limit Exceeded

    от Rafael Almeida
  • Error: User Rate Limit Exceeded

    от Rafael Almeida
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • gcc и g ++ буквально указывают на один и тот же исполняемый файл. Разница лишь в том, что флаги передаются на сервер.

    от Martin York
  • Не было варианта = D

    от Rafael Almeida
  • Исправьте сервер автоматической отправки!

    от Keith Thompson
  • 41

    Вы можете связать стандартную библиотеку c ++ с

    -l флаг для gcc:

    gcc cplusplus.o -lstdc++ -o myexe
    

  • 14

    Если вы запускаете g ++ с &

    quot; -v & quot; опция, она покажет, какую команду и опции она использует. Вы должны быть в состоянии вывести правильную командную строку gcc оттуда.