gcc安装的各个部分:
| g++ | c++编译器,链接时使用c++库 |
| gcc | c编译器,链接时使用c库 |
| cc1 | 实际的c编译器 |
| cc1plus | 实际的c++编译器 |
| collect2 | 使用collect2产生特定的全局初始化代码,后台处理是传递参数给ld完成实际的链接工作。 |
| crt0.o | 初始化和结束代码 |
| libgcc | 平台相关的库 |
binutils安装的各个部分
| as | gnu汇编工具 |
| gprof | 性能分析工具 |
| ld | gnu链接器 |
| make |
|
| objcopy | 目标文件从二进制格式翻译或复制到另一种 |
| objdump | 显示目标文件的各种信息 |
| strings | 显示文件的字符串 |
| strip | 去除符合表 |
| readelf | 分析elf并显示信息 |
链接器可以读写各种目标文件中的信息,通过BFD(binary file descriptor)提供的工具实现,BFD定义了类似a.out, elf, coff等目标文件的格式。
objdump程序
| -a |
| 文档头文件信息 |
| -d |
| 可执行代码的反汇编 |
| -D |
| 反汇编可执行代码及数据 |
| -f |
| 完整文件头的内容 |
| -h |
| section表 |
| -p |
| 目标格式的文件头内容 |
gas汇编工具:as(at&t风格)语法说明
使用$标识立即数 |
再寄存器前面加上% |
源操作数在前,目标操作数在后 |
使用$获取变量地址 |
长跳转使用:ljmp $section, $offset |