将C++代码与'gcc'链接(不带g ++)

Raf*_*ida 25 c++ linker gcc

大家好:快速问题:我的情况是只使用'gcc'(没有g ++)生成我的C++可执行文件是有用的.原因是我必须将代码提交给自动提交服务器,该服务器无法识别'g ++'(或'c ++',就此而言)命令.

在我的实验中,虽然我正在编译 gcc工作得很好.问题是,当我尝试链接生成的目标文件时,它会搞砸.现在,基于我从gcc手册页中所理解的内容(我可能会离开,所以告诉我,如果我),g ++基本上是gcc,但它链接了C++库.

如果是这样,我怎么能(如果可能的话)显式链接C++库而不使用g ++(或c ++)命令?

编辑:我正在添加makefile以更好地说明问题:

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/*
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 42

您可以将标准c ++库与-l标志链接到gcc:

gcc cplusplus.o -lstdc++ -o myexe
Run Code Online (Sandbox Code Playgroud)


Jes*_*erE 15

如果使用"-v"选项运行g ++,它将显示它使用的命令和选项.您应该能够从那里推断出正确的gcc命令行.