【发布时间】:2013-04-10 14:39:21
【问题描述】:
所以我有libA.a libB.a libC.a libD.so 和一些链接到libPack.a 的代码。稍后,我将创建libFinal.so,它将链接到 libPack.a,并且 libFinal.so 最终用于可执行文件。
当链接器创建静态库时,我相信每个动态库都会在编译时解析并包含在静态库中。对于 (-fPIC) 第三方静态库,它是否也这样做?
如何使用 CMake 将一堆静态库和共享库组合成一个巨大的独立 libFinal.so 库?如果这不可能,是否意味着我必须向客户端提供所有 lib 依赖项?
我已经设法让可执行文件与一个没有依赖关系的虚拟库(没有libA...D)一起工作,但是当我使用链接到libA..D 的libPack.a 时,我得到了第三方库的未定义符号。我的猜测是libPack.a 中没有提供静态库,但我不确定发生了什么。
【问题讨论】:
-
一个静态库没有被链接,把它想象成一个
zip的目标文件。链接只发生在可执行文件和共享库上。 -
我认为 undefined symbol 来自
libD.so或您系统上的其他 3rd 方库
标签: c++ linker cmake static-linking