【发布时间】:2014-07-29 14:56:44
【问题描述】:
我正在尝试打包一些本地库以包含在 java natives .jar 中。目前,我们的目标是 32 位和 64 位 linux 和 windows,macosx 即将推出(总共将产生 6 个变体)。此外,我们还有一些命名问题,如果我们可以将几个小库合并为一个大库,这些问题将得到解决。
我的目标是转化
my_library.so dependencyA-55.so dependencyB-50.so
进入
my_library_without_dependencies.so
我有 dependencyA 和 dependencyB 的完整(C 和 C++)源代码;但是,我宁愿不干预他们的编译,因为它非常复杂(ffmpeg)。我正在尝试使用 gcc 4.6(ubuntu 12.04 64 位)来解决这个问题,如果找到该解决方案,理想情况下应该适用于 64 位和 32 位 linux,以及 64 位和 32 位 Windows 架构(跨- 通过 mingw32 编译)。
是否有任何神奇的链接器选项组合会导致 GCC 将依赖项包含到单个最终共享库中?我专心地看着the linker options 没有成功,相关的 SO 问题没有解决这个用例。
【问题讨论】:
-
不可能,相反,您可以将静态库创建为“dependencyA.a”和“dependencyB.a”(因为您有源代码)并在创建时使用“--whole-archive”链接器开关“my_library.so”
-
谢谢 - 经过大量的额外浏览,我收集到了尽可能多的信息。如果你回答你的评论,我会接受。否则,我将删除问题。
-
好的,我已将其发布为答案。希望它会帮助某人。
标签: linux gcc linker shared-libraries