创建包含其链接时库依赖项的共享库



我试图将一些本地库打包到java natives .jar中。现在,我们的目标是32位和64位的linux和windows, macosx即将推出(总共会产生6个版本)。此外,我们还有一些命名问题,如果我们能把几个小库合并成一个大库,这些问题就会得到解决。

我的目标是转换

my_library.so dependencyA-55.so dependencyB-50.so 

my_library_without_dependencies.so

我有完整的(C和c++)源代码的dependencyAdependencyB;然而,我宁愿不介入它们的编译,因为它相当复杂(ffmpeg)。我正在尝试使用gcc 4.6 (ubuntu 12.04 64位),如果找到解决方案,理想情况下应该适用于64位和32位linux,以及64位和32位windows体系结构(通过mingw32交叉编译)。

是否有任何神奇的链接器选项组合会导致GCC将依赖项包含到单个最终共享库中?我已经仔细研究了链接器选项,但没有成功,相关的SO问题没有解决这个用例。

这是不可能的。

共享对象已经是链接器的产物,并且以准备执行的形式存在。

相反,您可以将静态库创建为"dependencyA"。a"one_answers"dependencyB.a"(当你有源代码时)并在创建"my_library.so"

时使用"——whole-archive"链接器开关

最新更新