linux下查找bin依赖的动态库之ldd使用

ldd是一个用于列出可执行文件动态依赖库的shell脚本。它可以帮助理解程序所需的动态库,特别是在移植或调试过程中确定需要哪些库。通过`ldd <binary>`命令,可以查看指定bin文件依赖的动态库列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ldd是什么?

ldd如何使用?

ldd什么场景使用?

 

本文尽量的把上面的上个问题解释清楚,有理解不到位的地方还请多多指正。

 

ldd是什么?

    ldd不是命令,是一个shell脚本,保存路径/usr/bin/ldd,可以直接cat或者vi查看具体的实现。

    ldd的全称是list dynamic dependencies,意思是,列出动态库依赖关系,我们在编译生成可执行文件时,有静态链接及动态链接库文件,ldd可以列出可执行文件依赖的所有的动态库。


ldd如何使用?

 我们可以通过帮助文档,查看ldd的使用方法。

Usage: ldd [OPTION]... FILE...
      --help              print this help and exit
      --version           print version information and exit
  -d, --data-relocs       process data relocations
  -r, --function-relocs   process data and function relocations
  -u, --unused            print unused direct dependencies
  -v, --verbose           print all information

  直接ldd FILE即可,比如:

kevin@droid11-sz:/mnt/nfsroot/kevin$ ldd /bin/ls
        linux-vdso.so.1 =>  (0x00007ffe5cd79000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f3100f1c000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3100d14000)
        libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f3100b0c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f310074b000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3100547000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f310113b000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f310032a000)
        libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f3100125000)

  我们可以看到ls依赖如下列表中的动态库。


ldd什么场景使用?

  在实际linux开发与调试中, 我们有时候需要对可执行bin移植,如果是动态链接的库,那么直接把bin移植过去,是无法直接运行的,我们需要把对应的依赖的动态库也一起移植,此时,ldd命令就很方便的帮助我们查看,哪些依赖的动态库需要一起移植


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值