1

我正在玩一个似乎包装 gcc (qcc) 的工具链,但也将 g++ 用于一些事情。当我无法使用 g(q)cc 链接我用 g++ 构建的库时,这引起了一些混乱,即使它是用于相同的架构(由于缺少库错误)。经过更多研究,我发现 g++ 基本上是 gcc,带有一些默认标志和文件扩展名的解释机制略有不同(我可能已经浏览过其他差异)。我想确切地知道哪些标志可以传递给 gcc 以达到等效的 g++ 调用。例如:

g++ -g -c hello.cpp   // I know at the very least that this links in stl
gcc -g -c -???        // I want the exact same result as I got with g++... what flags do I use?

工具链的设置方式使得简单地用 g++ 替换 gcc 调用有点困难。知道我需要通过哪些标志会容易得多。

4

1 回答 1

3

gcc使用与g++编译 C++ 代码的区别在于(a) 将具有、和扩展名g++的文件编译为 C++ 而不是 C,并且 (b) 它自动与 C++ 标准库 ( ) 链接。请参阅手册页.c.h.i-lstdc++

因此,假设您没有将 、 或 文件编译.c.h.C .i++,您需要做的gcc就是g++-lstdc++命令行选项添加到链接器标志中。如果您这些其他文件编译为 C++,您可以添加-x c++,但我建议您将它们重命名为使用.cc.ii文件(.h如果您使用的是预编译头文件,可以保持这种方式)。

于 2012-05-31T04:28:48.657 回答