gpt4 book ai didi

linux - 创建一个包含其链接时库依赖项的共享库

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:36 24 4
gpt4 key购买 nike

我正在尝试打包一些 native 库以包含到 java natives .jar 中。现在,我们的目标是 32 位和 64 位 linux 和 windows,即将推出 macosx(这将产生总共 6 个变体)。此外,我们还有一些命名问题,如果我们可以将几个小库合并为一个大库,这些问题就会得到解决。

我的目标是转化

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

进入

my_library_without_dependencies.so

我有dependencyAdependencyB 的完整(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”(因为你有源代码)并在创建“my_library.so”时使用“--whole-archive”链接器开关

关于linux - 创建一个包含其链接时库依赖项的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com