【发布时间】:2020-05-10 18:08:35
【问题描述】:
我有一个.so 库,在构建它时我没有收到任何未定义的引用错误。
但是现在我正在使用.so 文件构建一个可执行文件,我可以在链接阶段看到未定义的引用错误,如下所示:
xy.so:对 `MICRO_TO_NANO_ULL' 的未定义引用
同样阅读here 会导致更多混乱:
动态链接是通过放置可共享的名称来完成的 可执行映像中的库。与图书馆的实际链接 在映像运行之前,例程不会发生,当两个 可执行文件和库被放置在内存中。一个优势 动态链接是多个程序可以共享一个副本 图书馆。
我的问题是:
不动态链接意味着当我使用启动可执行文件时
./executable_name然后如果链接器无法找到.so它应该崩溃的可执行文件依赖于哪个文件?如果所有外部实体引用都是 在构建时解决?是动态链接器执行的某种预检查吗?别的 动态链接器可以利用
LD_LIBRARY_PATH获取额外的库来解决未定义的问题 符号。
【问题讨论】:
-
投票支持关闭问题的人 - 请发布一个链接,以便我阅读相关内容,我将自己删除该问题。
-
您确实应该发布您观察到的链接器错误。
-
@YugSingh “请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次提出多个不同的问题。请参阅如何提问页面以帮助澄清此问题。” -- “需要专注”的密切原因
-
@S.S.Anne 我觉得这些问题是相关的,并且在尝试理解动态链接时发生在我身上。这就是为什么我将它们作为同一问题的一部分发布。感谢您的建议。
-
@Ctx 我添加了链接器错误。感谢您的建议。
标签: c gcc ld dynamic-linking .so