链接静态库,共享另一个静态库

Jef*_*eff 14 xcode linker static-libraries

我目前有一个非常大的代码库的Xcode项目,我称之为Project X,我将其划分为一堆子项目(项目A,B,C).

到目前为止,这些项目中的每一个都可以自行编译.它们都产生静态库.项目B项目C依赖于项目A生成的静态库以进行构建.

我有另一个xcode项目,Project Z,它需要Projects B和C生成的静态库.这就是问题所在.当Project Z进入链接器阶段时,事情就会爆发 - 在项目B和C的库中找到重复的符号,用于它们最初在项目A中链接的代码!

我对静态库世界很陌生,我不确定如何推进Project Z,或者如何修改其他项目以便它们链接到同一个Project A lib.我觉得这是不可能的.我有什么选择?

编辑:

我应该澄清,项目B项目C需要构建成单独的静态库,因为一些客户端只需要一个或另一个.

此外,我在OSX和iOS平台上都遇到了这种困境.

我意识到我可以通过将项目构建为动态库来解决OSX上的这个问题.但是,我不想这样做,它仍然让我在iOS上遇到同样的问题.

Rob*_*ier 17

静态库不应该包含其他静态库(或一般的第三方代码).静态库只是一组粘在一起的.o文件.因此,如果您拥有相同信息的多个副本,那么它将会爆炸.

每个静态库都应该有自己的代码.最终的应用程序负责将所有必需的库链接在一起(包括库所需的库).这样,每件事物都只有一个副本.