2013-04-10 221 views
4

所以我有,说,libA.a libB.a libC.a libD.so和一些代码链接到libPack.a。稍后,我将创建将链接到libPack.a的libFinal.so,并且最终将libFinal.so用于可执行文件。将第三方静态库与cmake组合成一个独立静态库?

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

如何将一堆静态库和共享库合并为一个使用CMake的独立的大型独立库libFinal.so库?如果这是不可能的,是否意味着我必须为客户提供所有的lib依赖关系?

我设法得到可执行文件与没有依赖关系的虚拟库(没有libA...D)一起工作,但是当我使用链接到libA..D的libPack.a时,我得到第三方库的未定义符号。我的猜测是静态库不在libPack.a之内,但我不确定发生了什么。

+0

静态库没有链接,将其视为对象文件的“zip”。链接只发生在可执行文件和共享库上。 – 2013-04-10 17:44:45

+0

我认为*未定义符号*来自系统中的'libD.so'或其他第三方库 – bikram990 2013-05-09 12:07:26

回答