使用cmake将第三方静态库组合到一个独立的静态库中?

时间:2013-04-10 14:39:22

标签: c++ linker cmake static-linking

所以,我有libA.a libB.a libC.a libD.so和一些链接到libPack.a的代码。稍后,我将创建将链接到libPack.a的libFinal.so,并最终在可执行文件上使用libFinal.so。

当链接器创建静态库时,我相信每个动态库都会在编译时解析并包含在静态库中。对于(-fPIC)第三方静态库是否也这样做?

如何使用CMake将一堆静态库和共享库组合到一个巨大的独立libFinal.so库中?如果那不可能,那是否意味着我必须向客户提供所有的lib依赖?

我设法让可执行文件使用没有依赖项的虚拟库(没有libA...D),但是当我使用链接到{{1}的libPack.a时,我得到第三方库的未定义符号}。我的猜测是静态库不会在libA..D内发送,但我不确定发生了什么。

1 个答案:

答案 0 :(得分:0)

以下答案可能有用: How to combine several C/C++ libraries into one?Merge multiple .so shared libraries

如果这符合您的需求,您可以配置CMake脚本以向项目添加一个预链接事件,该事件将库组合成libFinal.so和furhter链接libFinal.so到可执行文件。