加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用ldd运行可执行文件时打印共享库依赖

发布时间:2020-12-13 19:59:14 所属栏目:百科 来源:网络整理
导读:例如一个可执行文件t,运行时需要依赖libstdc++.so.6,libboost_system.so.1.52.0,libc.so.6等动态库,可以用下面的方式查看t 依赖了哪些动态库: ldd -d ./t 可能的输出为: linux-vdso.so.1 = (0x00007fff7dfff000) libboost_system.so.1.52.0 = not foun

例如一个可执行文件t,运行时需要依赖libstdc++.so.6,libboost_system.so.1.52.0,libc.so.6等动态库,可以用下面的方式查看t 依赖了哪些动态库:

ldd -d ./t

可能的输出为:

linux-vdso.so.1 => (0x00007fff7dfff000)
libboost_system.so.1.52.0 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)

libstdc++.so.6 => /usr/lib64/libstdc++.so.6 告诉我们,t 依赖/usr/lib64/libstdc++.so.6 动态库文件,并在执行时找到并正确加载了该库。

libboost_system.so.1.52.0 => not found则告诉我t依赖libboost_system.so.1.52.0,但在加载它的时候没有找到该动态库文件。这时就要设法解决这个问题。例如,libboost_system.so.1.52.0 是安装在 /maomao/boost-install/lib 下,则可以通过在/lib64 下创建一个软链接搞定:

ln -s /maomao/boost-install/lib/libboost_system.so.1.52.0 /lib64/libboost_system.so.1.52.0

再次执行 ldd -d ./t,输出为:

linux-vdso.so.1 => (0x00007ffff4bff000)
libboost_system.so.1.52.0 => /lib64/libboost_system.so.1.52.0 (0x00007fe4ad0d7000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
librt.so.1 => /lib64/librt.so.1 (0x0000003b5bc00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)

t 找到并正确加载了libboost_system.so.1.52.0 动态库文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读