1.GNU / GCC简介
1.1GNU
GNU工具链(GNU Toolchain)是一组用于开发应用程序和操作系统的变成工具的集合,这些工具构成了一个完整的系统。
GNU工具链包括GCC,GNU Binutils,GNU m4,GNU make等部分。此处主要介绍GCC。
1.2GCC
GCC原来代表“ GNU C Compiler”的意思。但是通过GCC的发展,现在不仅仅支持C语言,也支持C ++,Java,Objective-C等。
因此,GCC被重新定义为“ GNU编译器集合”,即GNU编译器套件。
2.什么是GCC?(GNU Complier集合)
GCC(GNU Complier Collection)是一套完整的工具链。
包括gcc,g ++,ar,as,ld,objcopy,objdump等。不同的平台都有一套完整的工具。
2.1工具链组成
pc端:x86_64-linux-gnu-。否则就是gcc
嵌入式(MIPS):mips-linux-gnu-。arm对应的是arm-linux-gnu,不同的平台取代不同。
注意:这里嵌入式平台分为glibc 和 uclibc 之分。
2.2主要工具介绍
名称 |
说明 |
gcc | C 编译器,事实上最终调的是cc1 和 汇编器和链接器。 |
g++ | C++ 编译器,事实上最终调的是cc1plus 和汇编器和链接器。常用,事实上gcc 也可以编c++程序。 |
cpp |
C和C++预处理器,同 gcc -E 选项 |
c++ |
用法同g++ |
addr2line | 是一个可以将指令的地址和可执行映像转为文件名、函数名和源代码行数的工具。在程序崩溃时,可以快速定位代码位置。调试 |
ar |
用于建立、修改和提取档案文件。档案文件经常被用作程序库文件 |
as |
汇编器 |
ld |
链接器 |
gdb |
GNU 调试器 |
nm |
用于列出二进制文件 (包括库文件和可执行文件) 中的符号,这些符号可以是函数、全局变量、静态变量等 |
objcopy |
将目标文件从一种二进制格式复制和翻译到另外一种二进制格式 |
objdump |
用于列出关于二进制文件的各种信息 |
readelf |
读取ELF 格式的显示信息 |
strip |
用于移除目标文件中的符号,以及其他调试所需要的信息 |
size |
用于列出目标文件或者档案文件各段的大小 |
3.总结
本文简单介绍了,gcc工具链以及常用的工具,梳理一下各工具的用途。