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 |