【问题标题】:tracking origin of symbols in shared libraries跟踪共享库中符号的来源
【发布时间】:2018-08-04 17:57:06
【问题描述】:

我有一个共享库(更具体地说是本机 python 模块),它引用了其他库中的一些符号。 ldd -r 显示库的哪些符号无法在系统上动态解析。示例:

# ldd -r /usr/lib/python3.4/site-packages/_selinux.cpython-34m.so
…
undefined symbol: selabel_digest        (/usr/lib/python3.4/site-packages/_selinux.cpython-34m.so)

现在我有一个类似的系统,链接似乎可以工作,ldd 不报告任何未解析的符号。
我如何跟踪某些符号的来源(共享库的文件名)如何以及来自哪些来源在那个系统上解决了吗?我希望这可以帮助我在第一个系统上获得正确的链接。

【问题讨论】:

    标签: linux linker shared-libraries elf dynamic-linking


    【解决方案1】:

    如何跟踪系统上某些符号的解析方式和来源(共享库的文件名)?

    在“工作”系统上,运行

    LD_DEBUG=symbols,bindings ldd -r _selinux.cpython-34m.so |&
    grep selabel_digest
    

    【讨论】:

    • 谢谢。仅供参考:似乎man 8 ld-linux 是要寻找的地方,我只查阅了 binutils ld 文档。
    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2017-08-02
    • 2013-03-12
    相关资源
    最近更新 更多