边看书边做笔记,主要是为了查阅方便。
1、readelf工具用来从可执行文件得到有用信息。譬如,readelf -h hello 可以从hello得到elf header信息。readelf -s hello可以查看hello的section 头文件
2、size命令可以得到可执行文件的各个段大小。size有两种格式,Berkeley格式(size -B hello)和sysv格式(size -A hello)。其中sysv格式得到详细的信息,而Berkeley格式只得到大概的分段大小信息。
3、nm可以列出目标文件中的符号信息。譬如nm -A hello.o可以列出hello.o中的各种符号。a选项可以把调试符号也列出来,l选项可以把源代码中的行号也列出来
4、strip命令可以去掉elf文件内的符号信息。譬如strip hello即可将hello中所有的符号全部丢弃点,hello文件可以减小很多。要查看一个文件是否strip过,可以使用file hello这样的命令,列出信息内最后会有是否strip过的信息。
5、strings命令用来打印出elf档内的字符串信息。例如,strings hello 可以打印出hello文件内所有的字符串,string -f hello 可以在打印的字符串前加上所属文件的名字
6、objdump命令用来反编译elf为汇编文件。例如,objdump -d hello可以将hello反编译并输出到控制台,如果想保存反编译文档并查看,可以使用objdump -d hello > hello_objdump.txt将输出结果重定位到txt文件。objdump -R用来显示elf中的重定位信息
7、objcopy可以进行elf格式转换。譬如下面这句:arm-linux-objcopy --gap-fill=0xff -O binary uboot uboot.bin,指定将uboot转换成uboot.bin格式。