理解gcc缩略语

理解gcc缩略语,gcc,arm,toolchain,Gcc,Arm,Toolchain,我只是看了一下下面列出的gcc arm none eabi编译器二进制文件,但我真的不知道所有使用的缩写。我想知道哪个二进制文件是预处理器、链接器、编译器等等 $ ls /opt/gcc-arm-none-eabi-5_4-2016q3/bin/ arm-none-eabi-addr2line arm-none-eabi-ar arm-none-eabi-as arm-none-eabi-c++ arm-none-eabi-c++filt arm-none-eabi-cpp arm-none-e

我只是看了一下下面列出的gcc arm none eabi编译器二进制文件,但我真的不知道所有使用的缩写。我想知道哪个二进制文件是预处理器、链接器、编译器等等

$ ls /opt/gcc-arm-none-eabi-5_4-2016q3/bin/
arm-none-eabi-addr2line
arm-none-eabi-ar
arm-none-eabi-as
arm-none-eabi-c++
arm-none-eabi-c++filt
arm-none-eabi-cpp
arm-none-eabi-elfedit
arm-none-eabi-g++
arm-none-eabi-gcc
arm-none-eabi-gcc-5.4.1
arm-none-eabi-gcc-ar
arm-none-eabi-gcc-nm
arm-none-eabi-gcc-ranlib
arm-none-eabi-gcov
arm-none-eabi-gcov-tool
arm-none-eabi-gdb
arm-none-eabi-gdb-py
arm-none-eabi-gprof
arm-none-eabi-ld
arm-none-eabi-ld.bfd
arm-none-eabi-nm
arm-none-eabi-objcopy
arm-none-eabi-objdump
arm-none-eabi-ranlib
arm-none-eabi-readelf
arm-none-eabi-size
arm-none-eabi-strings
arm-none-eabi-strip
我只能猜测:
gcc
是编译器吗
ld
是链接器吗?
所有这些二进制文件的确切用途是什么?

领先的“arm none eabi”是编译器类型。这称为元组,并指定为配置“前缀”。许多二进制文件可能是调用另一个二进制文件(gcc)的链接或短包装脚本。另外,有些名称只是为了防止现有系统二进制文件具有相同的名称或多个gcc安装

您可以通过对程序名运行
man
命令来查找此信息。简而言之

  • addr2line-将地址(十六进制)转换为代码行号
  • ar-静态库(或归档)工具
  • 作为一个汇编程序
  • C++——C++前端< /LI>
  • c++过滤器-将损坏的名称转换为原型函数
  • cpp-仅限预处理器
  • elfedit-elf标头操作
  • G++-C++与GNU扩展。
  • gcc-标准二进制文件(给定的选项可以与包装器执行相同的操作)
  • gcc-5.4.1-具有多个gcc安装的系统的全名
  • gcc ar-在出现多个“ar”时重命名
  • gcc nm-在出现多个“nm”时重命名
  • gcc ranlib-在出现多个“ranlib”时重命名
  • gcov-代码覆盖率
  • gcov工具-代码覆盖率
  • gdb-调试器
  • gdb py-更简单的调试器
  • gprof-调用图/分析器
  • ld-链接器(最有可能是黄金)
  • ld.bfd-一个老式的链接器,具有更多的功能;对于大型C++项目来说要慢得多。
  • nm-以二进制显示“名称”
  • objcopy-操作二进制文件(节)
  • objdump-关于二进制文件的信息
  • ranlib-生成库索引
  • 关于ELF二进制文件的信息
  • 大小-程序段大小
  • 字符串-转储二进制文件中的所有字符串
  • 条带-从二进制文件中删除调试信息

作为一个概念,“gcc ar”和“ar”在物理上是相同的。但是,路径(Solaris或其他Unix系统)中可能存在另一个“ar”,可以使用“gcc ar”名称获取特定于gcc的“ar”;所有的“gcc XXX”都是针对这个用例的。

arm
是芯片家族
eabi
类似于“扩展ABI”(扩展应用程序二进制接口),与目标代码结构和o/s接口有关。这可能在GCC文档中的某个地方有记录。您可以在手册中找到一些关于名称的稍微不连贯的信息。