【发布时间】:2012-02-15 19:07:58
【问题描述】:
有一个免费软件项目可以构建一些静态 c++ 库,然后 链接它们以制作二进制文件。我想将库分开为 .so 文件用于动态链接(因此其他项目可能会使用 库)。一个库构建得很好,但是当我尝试链接时 它,我得到“未定义的引用”错误。
这些很容易追踪和修复(代码引用了那些 .h 文件中的方法,但对应的 .cc 文件没有 包含在 Makefile 编译命令中)。然而我是 想知道为什么,一般来说,图书馆会链接只是 可以作为静态库但不能作为动态库。什么是 g++ 和 ld 在一种情况下做而不在另一种情况下做?
非常感谢。
【问题讨论】:
-
未引用的对象在静态库的构建中实际位于何处?是其他静态库、其他共享库还是 .o 文件?参考什么,图书馆之一?
标签: c++ c g++ shared-libraries ld