c++ - g++ 没有 gcc 也能工作吗?

标签 c++ c gcc g++

G++ 是否可以在没有 GCC 的情况下进行编译,或者 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++ 。

最佳答案

最近 GCCgcc(实际上是cc1,由gcc运行)和g++(实际上是cc1plus >) - 其他 GCC 编译器依此类推,例如gfortran 甚至 gdc ....- 一起共享大量(源)代码:中间端(大多数优化发生的地方)和后端。区别仅在于编译器的前端层(唯一特定于源语言的层),不到编译器的 30%。

您可以使用插件或 MELT 自定义 GCC 编译器。您的扩展可以在 GCC 内部表示(Gimple-s)上工作,并且可以在编译 C、C++、Ada、Fortran 等时工作...请记住,GCC 意味着 Gnu 编译器集合 今天

实际上,gcc 程序能够编译 C++ 源代码(同样,g++ 也可以编译 C 或 Fortran 代码)。但是,它们没有链接相同的库。

-v 标志传递给 gccg++ 命令以了解它们正在运行的内容。

<小时/>

这里有两张(我的)[CC-BY-SA] 图片 - 解释 GCC 和 MELT - 说明了这一点。

编译器的三层——前端、中端、后端:

使用您的插件,或 MELT元插件

Three layers of GCC

简化一下:cc1cc1plus 正在生成汇编程序文件,然后由 as 启动由 进行翻译gccg++

cc1cc1plus 内部的另一个 View ,

生成一些汇编代码

view of <code>cc1</code> or <code>cc1plus</code>

关于c++ - g++ 没有 gcc 也能工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167291/

相关文章:

c - 使用复合文字初始化变量

c++ - 为什么我更改了子项中的父虚函数参数隐藏了父函数 C++?

C++:Linux 代码不能在 Windows 上运行——管道数据到程序

c++ - 尝试将代码简化为移动语义的基于范围的 for 循环时,不匹配 ‘operator[]'

c - 这个 realloc 使用有什么问题

c - 在 C 中使用邻接列表初始化基于数组的图形时出现问题

c++ - 在运行时执行之前确定 __PRETTY_FUNCTION__ 的值

c++ - cvCalcHist 和 calcHist 的区别

c++ - 如何用 c/c++ 填充我的 md5 消息

c++ - GMP、MPC、MPFR的库文件和头文件是分开的,如何安装GCC?