应该向gcc提供什么编译器参数才能认为它是g ++?

时间:2011-04-28 20:32:56

标签: c++ gcc g++

是否有可能向gcc写一个参数,以便它会认为它是G ++?

3 个答案:

答案 0 :(得分:5)

你为什么要这样做?据我所知,唯一的区别是g++另外将-lstdc++传递给链接器,以链接C ++标准库。

因此,如果您将该选项传递给GCC,它应该将其转发给链接器,并且一切都应该没问题。但我真的没有理由这样做。只需使用g++即可。

也就是说,我过去曾使用gcc来编译C ++代码。当我有一堆文件,混合C ++和C代码时,我只是使用gcc编译了所有内容,因为默认情况下g++.c视为C ++代码,这会破坏构建时C代码使用new之类的东西作为标识符。添加-lstdc++总能很好地工作。

请参阅GCC手册页

  

编译C ++程序

     

C ++源文件通常使用后缀.C,.cc,.cpp,.CPP,.c ++,。cc或.cxx; C ++头文件经常使用.hh,.hpp,.H,          或(对于共享模板代码).tcc;和预处理的C ++文件使用后缀.ii。 GCC识别具有这些名称的文件并编译它们          作为C ++程序,即使您以与编译C程序相同的方式调用编译器(通常使用名称为gcc)。

     

但是,使用gcc不会添加C ++库。 g ++是一个调用GCC并将.c,.h和.i文件视为C ++源文件的程序          除非使用-x,否则代替C源文件,并自动指定与C ++库的链接。这个程序在使用时也很有用          预编译带有.h扩展名的C头文件,以便在C ++编译中使用。在许多系统上,g ++也安装了名为c ++。

     

编译C ++程序时,可以指定许多用于编译任何语言程序的命令行选项;          或对C和相关语言有意义的命令行选项;或仅对C ++程序有意义的选项。

答案 1 :(得分:3)

documentation表示标记-x以指定语言:

gcc -x c++ ...

答案 2 :(得分:1)

'gcc'是'Gnu Compiler Collection'。如果你传递一个C ++文件,它会调用C ++编译器'g ++'。

尽管如此,'gcc'和'g ++'对于c ++文件是不可互换的。 gcc使用一些我不记得的额外参数来运行g ++。

编译c ++文件时,我总是使用g ++