【问题标题】:Does g++ work without gcc?g++ 没有 gcc 可以工作吗?
【发布时间】:2014-10-02 18:35:06
【问题描述】:

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++。

【问题讨论】:

  • 我知道 c++ 是带有类的 c。不。如果你准备好源代码,为什么不尝试编译呢?

标签: c++ c gcc g++


【解决方案1】:

最近 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 元插件

简化:cc1cc1plus 正在生成汇编文件,然后由as 翻译,由gccg++ 开始

cc1cc1plus 内部结构的另一个视图,

生成一些汇编代码

【讨论】:

  • 好吧(Merci Bcp c`est gentil)我问这个问题是因为我正在尝试从头开始制作一种编程语言,我对此有一点背景,我基于 C 和相同的语言制作了一个基于 32-asm 它就像基于 C 的两个编译,我自己的编译器将它翻译成 c 然后 gcc 将完成工作,但之后我想用一个编译器和 asm 1st 做一些大的东西我用它gcc -S 然后让 NASM 完成工作,之后我学习了一些汇编和我在没有 C 的情况下制作的(我不到 20 岁),现在我试图找出那些编译器中隐藏的内容
  • 如果您正在尝试制作自己的编程语言,请阅读 this answer 了解如何将您的语言翻译成 C。
  • 谢谢,但我已经这样做了,我读了很多书......等等和一些 LLVM 主题
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2010-09-25
  • 2021-12-02
  • 2016-09-12
  • 1970-01-01
相关资源
最近更新 更多