链接静态库,这一比例另一静态库(Linking static libraries, that sha

2019-06-17 14:22发布

我现在有一个非常大的代码库的单一的Xcode项目,我把它叫做X项目 ,其中我将变成一堆子项目( 项目A,B,C)的。

到目前为止,这些项目的汇总,对自己,就好了。 他们都产生静态库。 项目B项目C是依赖于项目A,以便建立所产生的静态库。

我还有一个xcode项目, 项目Z,需要通过项目B和C产生的静态库。 这里存在的问题。 当项目ž进入连接阶段,东西炸掉-重复符号的库的项目B和C,因为他们原本在项目A对链接的代码中找到了!

我是很新,静态库的世界,我不能确定如何与项目Z,或如何向前推进,使它们链接到的同一个项目一个 lib 文件修改等项目。 我有一种感觉这是不可能的。 什么是我选择这里?

编辑:

我要澄清的是项目B项目C需要建立成单独的静态库,因为某些客户端将只需要一个或另一个。

另外,我有两个OSX和iOS平台这一难题。

我意识到,我可以通过建立项目动态库解决在OSX这个问题。 不过,我不希望这样做,但它仍然给我留下了iOS上的同样的问题。

Answer 1:

静态库中不应包括其他静态库(或一般的第三方代码)。 静态库只是粘在一起.o文件的包。 所以,如果你有相同信息的多个副本,它会炸毁。

每个静态库应该只是有它自己的代码。 最终的应用程序负责所有需要的库链接在一起(包括库所需的库)。 这样正好有挂每一件事情一个副本。



Answer 2:

这听起来像是正是这类问题的CoacoaPods是为了解决。 如果你定义荚每个论文项目则Z应该能够确定并不会引入重复的符号对所有的依赖一路链的环节。



文章来源: Linking static libraries, that share another static library