应向 gcc 提供什么编译器参数才能让它认为它是 g++?
是否可以为 gcc 编写一个参数,使其认为它是 G++?
Is it possible to write an argument to gcc such that it would think its G++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
是否可以为 gcc 编写一个参数,使其认为它是 G++?
Is it possible to write an argument to gcc such that it would think its G++?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
你为什么要这样做?据我所知,唯一的区别是
g++
另外将-lstdc++
传递给链接器,以链接 C++ 标准库。因此,如果您将该选项传递给 GCC,它应该将其转发给链接器,并且一切都应该没问题。但我真的看不出这样做的理由。只需使用
g++
。也就是说,我过去自己使用
gcc
来编译 C++ 代码。当我有一堆文件,混合 C++ 和 C 代码时,我只是使用gcc
编译所有内容,因为g++
默认情况下将.c
视为是 C++ 代码,当 C 代码使用诸如new
作为标识符时,它会破坏构建。添加-lstdc++
总是效果很好。请参阅 GCC 联机帮助页
Why would you want to do this? As far as I know, the only difference is that
g++
in addition passes-lstdc++
to the linker, to link the C++ Standard library.So if you pass that option to GCC, it should forward it to the linker, and all should be fine. But I really don't see a reason in doing this. Just use
g++
.That said, I used
gcc
myself in the past, to compile C++ code. When I had a bunch of files, mixed C++ and C code, I just compiled everything usinggcc
, becauseg++
by default treats.c
as being C++ code, which breaks the build when the C code uses such things asnew
as identifiers. Adding-lstdc++
always worked nicely.See the GCC manpage
这个文档指出有一个标志
-x
来指定语言:This documentation states there is a flag
-x
to specify the language:“gcc”是“Gnu 编译器集合”。如果您向它传递一个 C++ 文件,它会调用 C++ 编译器“g++”。
尽管如此,对于 c++ 文件,“gcc”和“g++”不可互换。 gcc 运行 g++ 时带有一些我一时记不起的附加参数。
当你编译c++文件时,我总是使用g++
'gcc' is 'Gnu Compiler Collection'. If you pass it a C++ file, it invokes the C++ compiler, 'g++'.
Despite this, 'gcc' and 'g++' not interchangeable for c++ files. gcc runs g++ with a few additional arguments that I can't remember off the top of my head.
When you compile c++ files, I would always use g++