【问题标题】:Specific GCC programs and libs for C compiling [closed]用于 C 编译的特定 GCC 程序和库 [关闭]
【发布时间】:2016-01-30 14:20:58
【问题描述】:

我想知道 GCC 在编译 C 程序时使用了哪些特定程序(和库)。我听说当我调用名为“GCC”的可执行程序时,它并没有真正自己编译程序。相反,它将调用另一个程序进行编译和另一个程序进行链接。我还听说我们可以使用 -S 选项将 C 转换为汇编语言(所以我认为它已被另一个程序翻译)。我尝试搜索 GCC 文档,但找不到答案。负责创建 C 程序的程序和库是什么?提前致谢!

【问题讨论】:

  • 使用-v 选项查看gcc 的作用,它代表verbose
  • 好的,谢谢。但是我怎么知道 GCC 中的程序是做什么的。例如,当我添加了 -S 开关时,负责翻译代码的程序是什么?
  • 您阅读输出了吗?最后一个程序叫什么?我很好奇,为什么你想知道这个?如果您想生成汇编代码,只需像其他人一样使用gcc -S,那么您不必为实际编译程序所需的特殊标志而烦恼。
  • 是的。我读了输出。而且我认为最后一个调用的程序是 GCC(嗯,我不确定)。它只是详细开关显示的目录加上 GCC、GMP 和 MPFR 的版本,以及某种 GCC 标志(或参数,我仍然不确定)。至于你的第二个问题,如果我们创建一个应用程序并将其与整个 MinGW GCC 打包,这将花费大量时间(和空间)。但是如果我们只使用其中的一部分(仅用于调试应用程序的程序),也许我们可以节省更多的时间(和空间)。
  • 那你没看清楚。在我的系统上有一行写着/usr/lib/gcc/x86_64-linux-gnu/5/cc1,后面跟着很多参数。这是生成目标文件的实际编译器,汇编文件。

标签: c gcc mingw


【解决方案1】:

GCC 仅提供编译器:cc 用于 C,c++ 用于 C++,等等。其他重要程序由binutils 包提供。

根据Wikipedia,他们是:

  • as 汇编程序,俗称 GAS(GNU 汇编程序)
  • ld 链接器
  • gprof 分析器
  • addr2line 将地址转换为文件和行
  • ar 创建、修改和提取档案
  • c++filt 用于 C++ 符号的解构过滤器
  • dlltool 创建 Windows 动态链接库
  • gold 替代链接器
  • nlmconv 目标文件转换为 NetWare 可加载模块
  • nm 列出目标文件中的符号
  • objcopy 复制目标文件,可能会进行更改
  • objdump 转储有关目标文件的信息
  • ranlib 为档案生成索引
  • readelf 显示 ELF 文件大小列表总和部分大小的内容
  • 字符串列出可打印的字符串
  • strip 从目标文件中删除符号
  • windmc 生成 Windows 消息资源
  • windres Windows 编译器 资源文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多