由于使用Gentoo,经常会发生更新后程序链接到旧版本的库的情况。通常,revdep-rebuild可以帮助解决这个问题,但这一次它依赖于python库,python-updater不会使用它。
有没有ldd的“分层”变体,可以告诉我哪些共享库依赖于另一个共享库?大多数时候,库和可执行文件只链接到少数其他共享库,而这些共享库又链接到少数共享库,从而将库依赖项变成了一个大列表。我想知道我必须用我升级的另一个库的新版本重建哪个依赖项。
发布于 2012-08-18 15:58:56
我看到了许多有趣的细节,但没有直接回答所提出的问题。
ldd的“分层”版本是lddtree (来自app-misc/pax-utils):
$ lddtree /usr/bin/xmllint
xmllint => /usr/bin/xmllint (interpreter => /lib64/ld-linux-x86-64.so.2)
libreadline.so.6 => /lib64/libreadline.so.6
libncurses.so.5 => /lib64/libncurses.so.5
libdl.so.2 => /lib64/libdl.so.2
libxml2.so.2 => /usr/lib64/libxml2.so.2
libicui18n.so.49 => /usr/lib64/libicui18n.so.49
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/32/libstdc++.so.6
ld-linux.so.2 => /lib64/ld-linux.so.2
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/32/libgcc_s.so.1
libicuuc.so.49 => /usr/lib64/libicuuc.so.49
libicudata.so.49 => /usr/lib64/libicudata.so.49
libz.so.1 => /lib64/libz.so.1
liblzma.so.5 => /usr/lib64/liblzma.so.5
libm.so.6 => /lib64/libm.so.6
libpthread.so.0 => /lib64/libpthread.so.0
libc.so.6 => /lib64/libc.so.6发布于 2012-08-18 15:32:31
我还建议使用"readelf -d“,但也要确保您使用LDFLAGS="-Wl,--as-needed”进行构建。这将使您较少遇到此问题。Portage 2.2的preserve-libs很好,但我猜主要是因为它被屏蔽了--它确实有缺陷。
https://stackoverflow.com/questions/1488527
复制相似问题