g ++没有gcc吗?
没有GCC或G ++的G ++编译只是翻译//包括旧的g ++版本。
当我试图从源代码安装g ++我看到文件
gcc.c
/* Default prefixes to attach to command names. */ #ifndef STANDARD_EXEC_PREFIX #define STANDARD_EXEC_PREFIX "/usr/local/lib/gcc-" #endif /* !defined STANDARD_EXEC_PREFIX */
//来自g ++ 1.4 *
我知道c ++是c类,我只是想知道g ++是否可以在没有gcc的情况下编译c ++。
使用最近的 GCC , gcc
(实际上是由gcc
运行的cc1
)和g++
(实际上是cc1plus
) – 等等其他GCC编译器,例如gfortran
甚至gdc
….-共享很多(源)代码:中端(大多数优化发生的地方)和后端。 不同之处仅在于编译器的前端层(唯一的层是源语言特定的),它不到编译器的30%。
您可以使用插件或MELT自定义GCC编译器。 您的扩展将适用于GCC内部表示(Gimple-s),并且在编译C,C ++,Ada,Fortran等时可以正常工作…请记住, GCC意味着今天的Gnu编译器集合
实际上gcc
程序能够编译C ++源代码(同样g++
可以编译C或Fortran代码)。 但是,它们没有链接相同的库。
将-v
标志传递给gcc
或g++
命令以了解它们正在运行的内容。
这是两个(我的)[CC-BY-SA]图片 – 解释GCC和MELT-说明了这一点。
编译器的三个层 – 前端,中端,后端 – :
使用您的插件或MELT元插件
简化: cc1
或cc1plus
正在生成汇编程序文件,然后由gcc
或g++
启动
和
另一种cc1
或cc1plus
内部视图,
它会生成一些汇编代码