前些天做了两件事,1.strip符号表;2.查看so文件的代码是否inline。操作步骤如下
1.
readelf -sW libjvm.so | grep 'OBJECT *LOCAL *HIDDEN' | awk '{print $8}' | egrep '[.][0-9]+$' > strip_sym.lst
objcopy --strip-symbols=strip_sym.lst -v xxx.so
这样得到的新so文件就不含有strip掉的符号信息了,strip过程时间会稍长一点。
2.
objdump -dw xxx.so > dumpxxx.txt
通过dump出来的文件,可以看到汇编代码,进而判断函数是否inline了。
- 一、readelf
man的描述,readelf - Displays information about ELF files
什么是elf
Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,具体可以继续去查一些资料。
-s选项是读符号信息,-W是整行输出,不截断。具体用法可以看man的文档
- 二、objcopy
man的描述,objcopy - copy and translate object files
--strip-symbols选项是要strip掉的符号存储文件,具体用法参看man文档
- 三、objdump
man的描述,objdump - display information from object files.
-d选项是输出汇编信息,-w是整行输出,不截断。具体用法参看man文档