gpt4 book ai didi

macos - Mac 的 C 编译器?

转载 作者:行者123 更新时间:2023-12-04 02:11:36 26 4
gpt4 key购买 nike

我正在研究有关链接的文本,并希望与所述文本中的一些示例一起工作。

为了更好地理解当我调用 gcc 驱动程序时发生了什么,我正在研究手工完成所有编译;

  • 使用 cpp 进行预处理
  • 使用cc1 编译
  • as 组装
  • 使用 ld 链接

不幸的是,在我的 Mac 上我似乎无法直接引用 cc1(man 中没有列出 cc1)。我有哪些选择?

最佳答案

阅读一些关于 GCC 内部的资料。首先是 GCC 上的维基页面.然后,你可以玩 MELT probe (你可能想要一个 Linux 系统来使用它)。然后阅读GCC manual .和 GCC resource center

使用gcc -v -Wall 编译,它会显示cc1 正在运行(-Wall 总是有用的)。所以尝试用 gcc -v -Wall hello.c -o helloworld.bin

编译

cc1 程序不在您的 PATH/usr/bin/ 中,但在我的系统上-在 /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1

命令gcc -print-prog-name=cc1 会告诉你你的 gcc cc1。参见 GCC debugging options了解更多。

预处理现在在 cc1 中进行。

gcc 程序只是一个驱动程序,启动 cc1(它完成大部分编译工作),然后是 as ld 等...

MELT site包含一些文档和一些解释 GCC 的幻灯片,您可能会发现它们很有趣。 MELT 是一种扩展 GCC 的领域特定语言。

另见 http://starynkevitch.net/Basile/gcc-melt/cc1-internals.svg 上的图片和下面的图片

http://starynkevitch.net/Basile/gcc-melt/gcc-MELT-inside.png

图片来自http://starynkevitch.net/Basile/gcc-melt/gcc-MELT-inside.png ,由我完成,CC BY SA

cc1 正在生成一个.s 汇编文件; as(由 gcc 启动)正在将其转换为 .old 链接器(由 gcc 启动)将生成库或可执行文件。

附言。我有一个 Linux 系统,但在 MacOSX 上情况非常相似。

链接引用

一本关于链接的好书是 Levine's Linkers & loaders书。

附言。 MELT 在 2021 年已过时,但我正在研究 Bismon静态源代码分析器和 RefPerSys (生成 C++ 代码)。

关于macos - Mac 的 C 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com