c - 如何在 C 中构建和链接外部跨平台库?

标签 c build linker cross-platform

我是 C 语言的新手,我正在制作一个我希望跨平台的项目。我也想使用一个宣誓跨平台的外部库。我想知道我应该如何将其包含在我的项目中?

据我所知,我有两个选择。在我希望使用的每个平台上预先构建库,然后处理在我的构建过程中链接哪个库(不是很独立于平台)。或者我可以包含库的整个源代码并将其与我的项目一起构建。

这些是我处理跨平台库的唯一选择吗?也许我还不了解这个过程是如何完全运作的,所以任何帮助都会很棒!

(PS 我正在使用 CMake 构建我的项目。)

谢谢!

最佳答案

有几个因素及其组合可能会影响答案。

  • 外部库可以是静态的也可以是共享的。
  • 该版本旨在用于内部测试或发布。
  • 带有autoconf内容的应用程序源代码是分布式的或者是二进制应用程序是分布式的。
  • 带有自己autoconf内容的外部库源代码是分布式的或者二进制共享库是分布式的。

当你想分发二进制应用程序时,最好使用静态外部库。在这种情况下,您只有上面写的选项。您可以预先为每个平台构建库,也可以将库构建合并到您的构建过程中。

如果外部库和应用程序是开源的,并且它们与自己的 autoconf 东西一起分发,那么您不需要分发外部库,您只需添加一个 autoconf 依赖项即可。

关于c - 如何在 C 中构建和链接外部跨平台库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146852/

相关文章:

ruby - 将许多 ruby​​ 源文件组合成一个文件

c - 为什么有时需要为 C 链接列出两次库,这是可以避免的吗?

visual-c++ - Visual C++/CLI - CLR 类 - LNK2020 错误 - 如何修复?

c++ - 我不明白这个 C/C++ 笑话

c - C中奇怪的多变量赋值语句

android - 使用构建扫描时,Expo BarCode Scanner 崩溃

javascript - Vue 3 & Vite 构建的应用程序显示空白页面

c - 来自同一库的两个函数: why does one generate undefined reference while the other doesn't?

c - 必须在必须使用函数的地方声明函数原型(prototype)吗?

c - 使用 cURL 为自定义请求 header 发送空字符串值