我试图将一些本地库打包到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++)源代码的dependencyA
和dependencyB
;然而,我宁愿不介入它们的编译,因为它相当复杂(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"