我正在玩一个似乎包装gcc(qcc)的工具链,但也使用g ++来做一些事情。当我无法使用g(q)cc链接我用g ++构建的库时,这会引起一些混乱,即使它是针对相同的架构(由于缺少lib错误)。经过一番研究后,我发现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调用变得很困难。知道我需要通过哪些标志要容易得多。
答案 0 :(得分:3)
使用gcc
与g++
编译C ++代码之间的区别在于(a)g++
使用.c
,.h
编译文件, .i
扩展名为C ++而不是C,(b)它自动链接到C ++标准库(-lstdc++
)。请参阅man page。
因此,假设您没有将.c
,.h.
或.i
文件编译为C ++,那么您需要做的就是让gcc
像{{1}一样行事将g++
命令行选项添加到链接器标志。如果您 将这些其他文件编译为C ++,则可以添加-lstdc++
,但我建议您重命名它们以使用-x c++
或.cc
个文件(.ii
可以保持这种状态,如果您使用预编译的标头)。