首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分层ldd(1)

分层ldd(1)
EN

Stack Overflow用户
提问于 2009-09-28 18:13:24
回答 2查看 28.3K关注 0票数 50

由于使用Gentoo,经常会发生更新后程序链接到旧版本的库的情况。通常,revdep-rebuild可以帮助解决这个问题,但这一次它依赖于python库,python-updater不会使用它。

有没有ldd的“分层”变体,可以告诉我哪些共享库依赖于另一个共享库?大多数时候,库和可执行文件只链接到少数其他共享库,而这些共享库又链接到少数共享库,从而将库依赖项变成了一个大列表。我想知道我必须用我升级的另一个库的新版本重建哪个依赖项。

EN

回答 2

Stack Overflow用户

发布于 2012-08-18 15:58:56

我看到了许多有趣的细节,但没有直接回答所提出的问题。

ldd的“分层”版本是lddtree (来自app-misc/pax-utils):

代码语言:javascript
复制
$ 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
票数 95
EN

Stack Overflow用户

发布于 2012-08-18 15:32:31

我还建议使用"readelf -d“,但也要确保您使用LDFLAGS="-Wl,--as-needed”进行构建。这将使您较少遇到此问题。Portage 2.2的preserve-libs很好,但我猜主要是因为它被屏蔽了--它确实有缺陷。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1488527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档