gpt4 book ai didi

c++ - 静态库与动态库中的符号解析

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:27 24 4
gpt4 key购买 nike

有一个免费软件项目可以构建一些静态 C++ 库,然后链接它们以制作二进制文件。我想将库分开为.so 用于动态链接的文件(因此其他项目可能会使用库)。一个库构建得很好,但是当我尝试链接时它,我收到“ undefined reference ”错误。

那些很容易追踪和修复(代码引用了那些.h 文件中的方法,但相应的 .cc 文件中没有包含在 Makefile 编译命令中)。然而,我是想知道为什么,一般来说,图书馆会链接可以作为静态库使用,但不能作为动态库使用。什么是g++ 和 ld 在一种情况下做,而在另一种情况下做?

非常感谢。

最佳答案

静态库,用ar 创建,只是一堆目标文件。 ar 是一个非常简单的存档器。链接时没有解决依赖关系,请参阅 ar 的手册页。

另一方面,

共享对象,或者您所说的动态库是完全不同的野兽。它们实现了 ELF 二进制格式并具有复杂的规则集。它们也有初始化代码,一些依赖关系在链接时解决。参见 http://www.akkadia.org/drepper/dsohowto.pdfhttp://www.akkadia.org/drepper/goodpractice.pdf进行更深入的介绍。

关于c++ - 静态库与动态库中的符号解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299634/

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