所以,我有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
内发送,但我不确定发生了什么。
答案 0 :(得分:0)
以下答案可能有用: How to combine several C/C++ libraries into one? 和 Merge multiple .so shared libraries
如果这符合您的需求,您可以配置CMake脚本以向项目添加一个预链接事件,该事件将库组合成libFinal.so和furhter链接libFinal.so到可执行文件。