linux - 分层 ldd(1)

标签 linux gcc linker gentoo ldd

由于使用 Gentoo,更新程序后经常会链接到旧版本的库。通常,revdep-rebuild 有助于解决这个问题,但这次它是对 python 库的依赖,而 python-updater 不会选择它。

是否有 ldd 的“分层”变体,它向我显示哪个共享库依赖于另一个共享库?大多数时候,库和可执行文件仅与少数其他共享库链接,而这些共享库又与少数几个共享库链接,从而将库依赖关系变成了一个大列表。我想知道我必须使用我升级的另一个库的新版本来重建哪个依赖项。

最佳答案

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

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

关于linux - 分层 ldd(1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488527/

相关文章:

c# - 将 DLL 嵌入已编译的可执行文件中

linux - 如何在 vi 编辑器或 linux 中查找和删除两个文件中的重复行

java - 如何将一个进程的输出重定向为另一进程的输入?

c - 刷新基于 c/c++ 的可执行文件的标准输出消息

c - GCC 为什么会生成错误的结构偏移量?

c++ - 无法将头文件正确链接到 cpp 文件的链接错误

c++ - 使用 CMake 构建可移植的 Python C-API

linux - tcsh 脚本 - 不会使用 cygwin 输出简单的 ls -l 命令

c++ - 在 Linux Mint 17.1 64 位(未声明/不是类型)上尝试 "make"C++ 项目时从 cstdlib 编译错误和类似错误

c - GCC 和 G++ struct packing 的区别?