首先我们可以使用file命令或者readelf -h来察看二进制文件的格式以及头部,有时候有些.a文件里面包含了多个obj文件,是一个archive,因此,无法用file命令查看格式,此时就得用readelf来看。readelf -h会列出其headers,以及各个构成部分的格式。
对于dynamic 库文件,用readelf -h可以查看其格式,用readelf -s也可以看到符号,但是如果该库是c++的,那么还需要对符号进行demangle,此时我们可以用nm命令。直接使用nm命令会识别不出来,因为我们这个是动态库,因此需要使用-D参数,此外由于包含了c++的符号,需要demangle,因此还得加上-C参数,有时候,根据其输出,如果一个符号前面的地址是一串数字,那么可以认为这个函数符号在这个库里面有定义,而有的符号没有合法的地址,而且有一个U标记,这表明这个符号不在这个扩里面定义。
用objdump也可以查看符号,需要使用-T来查看动态库的符号,使用-t来查看非动态库的符号,可以使用-C来进行demangle操作。
阅读(2021) | 评论(0) | 转发(0) |