将 *.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的主要内容,如果未能解决你的问题,请参考以下文章