在链式静态库中,我是否必须添加链接的所有库?

时间:2014-11-27 12:22:25

标签: c++ linux static-libraries

我创建了静态库A,该库正在使用另一个静态库B

为了在代码A中使用库C,我添加了库A和标题A,但B

因为我知道静态库在编译时被合并,所以库B已经包含在A中。

但是当我编译代码C时,似乎要求我添加库B也显示未定义的引用错误。

当我同时添加库B时,错误消失。

为什么?

1 个答案:

答案 0 :(得分:1)

您需要同时添加A和B.

当静态lib A使用静态lib B时,B绝对不会在A中组合。这是不可能的,因为生成静态库时没有链接步骤。

这是Linux上共享库和静态库之间的区别。

如果您的库编写得很好,您可能不需要在代码C中添加B头,但在链接时,(可执行文件或共享库甚至是Windows中的DLL)您将需要所有使用的静态库。