如何C ++编译静态渴求方库,其中包含其他人在主应用程序中使用的另一个库

时间:2018-11-04 09:05:55

标签: c++ linker static-libraries

我有2个OSS第三方库,它们都使用另一个第三方库编译为STATIC。
为了上下文,我拥有什么:
静态libssh->使用静态openssl lib
静态libcurl->使用静态openssl lib
我的主要应用程序正在使用openssl static 现在,我将libssh和libcurl正确地编译为静态lib,它们都使用openssl的静态版本进行编译
据我了解,libcurl和libssh包含静态链接openssl
如果是真的,我在libssh和libcurl中嵌入了2个openssl,它们也也嵌入到我的应用程序中,另外还有一个我自己的主应用程序正在使用的。
我的问题是如何静态编译第三方库,但使它们使用1个静态openssl副本?
我不想将libssh libcurl源代码导入到我的应用程序中,而是将它们静态链接为单独的lib文件。

1 个答案:

答案 0 :(得分:2)

静态库实际上只是对象文件的归档(这就是后缀.a的原因)。它们最肯定不包含任何依赖关系,因为它们在创建时并未真正链接。

如果您使用静态库,则还需要明确链接所有库依赖项。