栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

分层ldd(1)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分层ldd(1)

如果您正在使用运行Portage≥2.2

FEATURES=preserve-libs
,你几乎很少需要
revdep-rebuild
了,因为老人
.so.
需要VERS将被保留,(但你仍然需要仔细重建,因为东西还是去KABOOM当
libA.so.0
欲望
libC.so.0
libB.so.0
希望
libC.so.1
与一些二进制希望既
libA.so.0
libB.so.0
)。


就是说,要做的

ldd
是让动态链接器照常加载可执行文件或库,但在此过程中打印出一些信息。这是一个递归的“二进制需求库需要其他库和hellip”搜索,因为这是动态链接器所做的。

我目前正在运行Linux / ppc32;在Linux / x86上,动态链接程序通常为

/lib/ld-linux.so.2
;在Linux /
x86_64上,动态链接程序通常为
/lib/ld-linux-x86-64.so.2
。在这里,我直接称呼它只是为了强调一点,
ldd
就是shell脚本需要动态链接程序执行其魔术。

$ /lib/ld.so.1 /sbin/badblocksUsage: /sbin/badblocks [-b block_size] [-i input_file] [-o output_file] [-svwnf]       [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]       [-p num_passes] [-t test_pattern [-t test_pattern [...]]]       device [last_block [first_block]]$ LD_TRACE_LOADED_OBJECTS=1 /lib/ld.so.1 /sbin/badblocks        linux-vdso32.so.1 =>  (0x00100000)        libext2fs.so.2 => /lib/libext2fs.so.2 (0x0ffa8000)        libcom_err.so.2 => /lib/libcom_err.so.2 (0x0ff84000)        libc.so.6 => /lib/libc.so.6 (0x0fdfa000)        libpthread.so.0 => /lib/libpthread.so.0 (0x0fdc0000)        /lib/ld.so.1 (0x48000000)$ LD_TRACE_LOADED_OBJECTS=1 /lib/ld.so.1 /lib/libcom_err.so.2        linux-vdso32.so.1 =>  (0x00100000)        libpthread.so.0 => /lib/libpthread.so.0 (0x6ffa2000)        libc.so.6 => /lib/libc.so.6 (0x6fe18000)        /lib/ld.so.1 (0x203ba000)$ grep -l pthread /sbin/badblocks /lib/libcom_err.so.2/lib/libcom_err.so.2

/sbin/badblocks
没有
libpthread.so.0
列为库依赖项,但是被引入
libcom_err.so.2

您的问题

ldd
不会输出漂亮的依赖树吗?使用
ldd -v

$ LD_TRACE_LOADED_OBJECTS=1 LD_VERBOSE=1 /lib/ld.so.1 /sbin/badblocks        linux-vdso32.so.1 =>  (0x00100000)        libext2fs.so.2 => /lib/libext2fs.so.2 (0x0ffa8000)        libcom_err.so.2 => /lib/libcom_err.so.2 (0x0ff84000)        libc.so.6 => /lib/libc.so.6 (0x0fdfa000)        libpthread.so.0 => /lib/libpthread.so.0 (0x0fdc0000)        /lib/ld.so.1 (0x201f9000)        Version information:        /sbin/badblocks:     libc.so.6 (GLIBC_2.2) => /lib/libc.so.6     libc.so.6 (GLIBC_2.4) => /lib/libc.so.6     libc.so.6 (GLIBC_2.1) => /lib/libc.so.6     libc.so.6 (GLIBC_2.0) => /lib/libc.so.6     libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6        /lib/libext2fs.so.2:     libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6     libc.so.6 (GLIBC_2.4) => /lib/libc.so.6     libc.so.6 (GLIBC_2.3) => /lib/libc.so.6     libc.so.6 (GLIBC_2.2) => /lib/libc.so.6     libc.so.6 (GLIBC_2.1) => /lib/libc.so.6     libc.so.6 (GLIBC_2.0) => /lib/libc.so.6        /lib/libcom_err.so.2:     ld.so.1 (GLIBC_2.3) => /lib/ld.so.1     libpthread.so.0 (GLIBC_2.1) => /lib/libpthread.so.0     libpthread.so.0 (GLIBC_2.0) => /lib/libpthread.so.0     libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6     libc.so.6 (GLIBC_2.4) => /lib/libc.so.6     libc.so.6 (GLIBC_2.1) => /lib/libc.so.6     libc.so.6 (GLIBC_2.0) => /lib/libc.so.6        /lib/libc.so.6:     ld.so.1 (GLIBC_PRIVATE) => /lib/ld.so.1     ld.so.1 (GLIBC_2.3) => /lib/ld.so.1        /lib/libpthread.so.0:     ld.so.1 (GLIBC_2.3) => /lib/ld.so.1     ld.so.1 (GLIBC_2.1) => /lib/ld.so.1     ld.so.1 (GLIBC_PRIVATE) => /lib/ld.so.1     libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6     libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6     libc.so.6 (GLIBC_2.4) => /lib/libc.so.6     libc.so.6 (GLIBC_2.1) => /lib/libc.so.6     libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6     libc.so.6 (GLIBC_2.2) => /lib/libc.so.6     libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6     libc.so.6 (GLIBC_2.0) => /lib/libc.so.6

如果需要,您可以直接读取ELF标头,而不必依赖于动态链接器。

$ readelf -d /sbin/badblocks | grep NEEDED 0x00000001 (NEEDED)          Shared library: [libext2fs.so.2] 0x00000001 (NEEDED)          Shared library: [libcom_err.so.2] 0x00000001 (NEEDED)          Shared library: [libc.so.6]$ readelf -d /lib/libcom_err.so.2 | grep NEEDED 0x00000001 (NEEDED)          Shared library: [libpthread.so.0] 0x00000001 (NEEDED)          Shared library: [libc.so.6] 0x00000001 (NEEDED)          Shared library: [ld.so.1]

您也

man ld.so
可以使用
glibc
的动态链接器播放其他可爱的技巧。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号