gcc:
c语言编译器是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件的功能。
g++:
c++语言编译器是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件的功能。
cpp:
预处理工具,将包含include的文件插入原文件中,将宏定义展开,根据条件编译命令选择要使用的代码,最后将这些代码输出到一个.i文件中等待进一步处理。
cll:
编译工具,将.i文件”翻译”成汇编代码。
as:
汇编工具,将汇编代码”翻译”为机器代码,在linux系统上一般表现为elf目标文件(obj文件)。
ld:
将汇编阶段生成的obj文件和系统的obj文件,库文件连接起来,最后生成可执行的文件。
ar:
ar命令可以用来创建、修改库,也可以从库中提出单个模块。
ar -rsv libmodule.a *.o,将当前目录想的所有.o文件生成库libmodule.a。
randlib:
ar用来创建和维护静态库,当用ar直接将一个.o文件追加到静态库结尾。之后使用这个库生成可执行文件时,链接程序ld提示错误。这是因为静态库中的符号索引表无法定位刚加入的.o文件中定义的函数或者变量,所以需要randlib对静态库的符号索引表更新。
Randlib libmodule.a
strip:
除去绑定程序和符号调试程序使用的信息,减少对象文件的大小。
objcopy:
复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。arm-linux-objcopy -O binary -S elf_file bin_file
objdump:
显示二进制文件的信息,常用来查看反汇编文件。
将elf格式的文件转换为反汇编文件:
arm-linux-objdump –D elf_file ->dis_file
将二进制格式的文件转换为反汇编文件:
arm-linux-objdump –D –b binary -m arm bin_file ->dis_file
阅读(2038) | 评论(0) | 转发(0) |