大家好:快速提问:我所处的情况是,仅使用“gcc”(不使用 g++)生成 C++ 可执行文件会很有用。原因是我必须将代码提交到自动提交服务器,该服务器无法识别“g++”(或“c++”)命令。

在我的实验中,当我 编译 海湾合作委员会运作良好。问题是,当我尝试链接生成的目标文件时,它会变得混乱。现在,根据我从 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/*
有帮助吗?

解决方案

您可以将标准 C++ 库链接到 -l 标记为海湾合作委员会:

gcc cplusplus.o -lstdc++ -o myexe

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top