将 *.a 编译为 *.so

Posted

技术标签:

【中文标题】将 *.a 编译为 *.so【英文标题】:Compile *.a to *.so 【发布时间】:2020-02-21 07:40:40 【问题描述】:

也许是一个愚蠢的标题,但我没有足够的创造力来找到一个更好的标题。 我的问题: 我有一个动态库,其中包含我的核心库和一个家伙库 FoxToolkit 所以 *.so 文件包含 mycorelib.a 和 foxtoolkit.a 作为示例 我现在已经从 mycorelib.a 中删除了 foxtoolkit.a 的所有依赖项,因此 foxtoolkit 已过时。 所以我只需要 mycorelib.a 作为动态库 mycorelib.so

需要什么,也许是 gcc 的命令行,才能将 .a 变成 .so?

【问题讨论】:

【参考方案1】:

有多种方法可以实现这一点。

首先,因为.a是一个存档,你可以解压它并从.o文件创建一个共享库

ar -x mycorelib.a
g++ -shared *.o -o mycorelib.so

第二,只是一个做同样的事情,但需要更多的努力来理解

gcc -shared -o mycorelib.so -Wl,--whole-archive mycorelib.a

【讨论】:

以上是关于将 *.a 编译为 *.so的主要内容,如果未能解决你的问题,请参考以下文章

Android 将 apk 反编译为源码

python:让源码更安全之将py编译成so

如何将用 python 编写的函数编译为 JavaScript (emscripten)?

python:让源码更安全之将py编译成so

Python 文件编译为字节码的方法

python编译文件(pyc)即使编译为字节码也需要系统上的导入库吗?