Toc
  1. ELF文件和readelf指令
  2. ldd的常见使用
Toc
0 results found
使用ldd以及readelf指令来了解你的库文件
2021/07/01 Linux

在之前的博客中,我们介绍了如何生成安卓下面可以使用的库文件,例如Boost,OpenCV之类的,但是在X64系统下,我们是无法通过ldd了解我们生成的库文件具体信息是什么,存在有哪些相关的依赖,这个使用我们就需要使用readelf这个指令来了解我们生成的这个库文件。

ELF文件和readelf指令

ELF文件全称Executable and Linkable Format,是Linux系统中默认的目标文件格式,我们通常使用的静态库文件,动态库文件,目标文件都属于带类型文件格式,这种类型的具体文件组成在这里就不详细介绍了,很多Linux系统相关书籍都会提供很多详细的介绍,包括文件组织,文件头等等。

现在回到readelf这个指令,常用的使用包括如下:

# 可以获得elf文件的头,我们可以通过这个判断编译出来的库文件类型的使用平台是否正确
readelf -h <elf>
# 查看自己需要的依赖
readelf -a <elf> | grep <keyword>

上面两个指令可以简单完成对于库文件头的查看,以及了解其中所需要的依赖。对于查看程序头表和节头表的内容,恕我确实不常用,在这里就不介绍了。

ldd的常见使用

相对于readelfldd的使用更为常见,在这里就简单列出一些几个常用的指令,如下:

#列出所有的链接信息,通常配合grep使用
ldd <target file>
#列出版本信息,如果自己电脑里安装有多个依赖版本,这个很常用,例如电脑中安装有多个OpenCV
ldd -v <target file>
#获取未经直接使用的链接库,我会配合strip使用,减少库的大小
ldd -u <target file>
#如果有确实的依赖,进行relocation
ldd -d/r <target file>
打赏
支付宝
微信
本文作者:Chronus
版权声明:本文首发于Chronus的博客,转载请注明出处!