gpt4 book ai didi

linux - 如何确定为什么动态库链接到应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:03 24 4
gpt4 key购买 nike

我有一个从源代码构建的 Linux 应用程序。当我对二进制文件运行 ldd 时,我理解了大部分库......但不是全部。

有没有办法向 ld 或 gcc/g++ 添加标志或我可以做的任何事情来确定链接器为什么选择链接到特定库?


编辑:

为了探索@shloim 设置的路线,我尝试了以下方法:

> nm -u /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
nm: /lib/x86_64-linux-gnu/libcrypto.so.1.0.0: no symbols

> file /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=230ebe6145b6681d0cb7e4c9021f0d899c02e0c4, stripped

nm 不能在 libcrypto 上运行是否有明显的原因?

最佳答案

这应该会向您显示所有在 so 文件中使用但在 so 中 undefined symbol :

nm -u <your_so_file>

然后你可以将它与

nm --defined-only <3rd_party_so_file>

并尝试找出常用符号

关于linux - 如何确定为什么动态库链接到应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com