【问题标题】:Compile *.a to *.so将 *.a 编译为 *.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?

【问题讨论】:

    标签: c++ linux gcc


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 2021-04-28
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多