前言
我们经常编译和使用linux版本库,但是当我们有一堆库时,或者某些库出现问题时,我们如何去查看这些库的详细信息呢?总不能去找对应的负责人然后查看相关的编译记录和说明吧,所以我们需要自己能够简单的查看一些信息。
一、readelf是什么?
readelf命令,一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(.so)或者静态库(.a) 等包含ELF格式的文件
二、readelf可以看什么?
readelf很强大,我还没有用到了解它所有的功能。下边我们就先介绍,我会在用到相应的功能之后进行补充:
1、查看库文件是32还是64位;
2、查看库文件是否存在-fPIC选项;(不明白fPIC是什么的建议阅读 程序员的自我修养–链接、装载与库 中 地址无关代码 那一节有详细介绍 ,另外提示:fpic与fPIC是有区别的)
三、readelf功能使用
1、readelf libdest.a -h
这里可以看到库文件是32位库还是64位库
2、readelf --relocs libdest.a | egrep '(GOT|PLT|JU?MP_SLOT)'或readelf -d libdest.so | grep REL
这里如果有输出符号,那么这个库是以fPIC选项编译的;否则,没有fPIC选项