如何将多个 C/C 库合并为一个?

新手上路,请多包涵

我厌倦了在我的项目中添加十个链接库,或者需要其中的八个来使用我自己的。我想采用现有的库,如 libpng.a、libz.a、libjpeg.a,并将它们组合成一个 .a 库。那可能吗?组合 .lib 库怎么样?

原文由 GhassanPL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

在类 Unix 系统上,ld 和 ar 实用程序可以做到这一点。查看 http://en.wikipedia.org/wiki/Ar_(Unix) 或在任何 Linux 机器上或通过 Google 查找手册页,例如“Unix man ar”。

请注意,链接到共享(动态)库可能会更好。这会给您的可执行文件添加一个依赖项,但它会显着减小其大小,尤其是在您编写图形应用程序时。

原文由 Avner 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Linux、 MinGWCygwin 上,使用 GNU 工具链:

 ar -M <<EOM
    CREATE libab.a
    ADDLIB liba.a
    ADDLIB libb.a
    SAVE
    END
EOM
ranlib libab.a

或者,如果您可以保持 liba.alibb.a 的存在:

 ar crsT libab.a liba.a libb.a

在 Windows 上,使用 Microsoft Visual C++ 工具链:

 lib.exe /OUT:libab.lib liba.lib libb.lib

原文由 Star Brilliant 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题