gpt4 book ai didi

c++ - 是否可以编译在所有 Linux 发行版中执行的 C/C++ 源代码而无需重新编译?

转载 作者:IT老高 更新时间:2023-10-28 22:16:41 25 4
gpt4 key购买 nike

是否可以编译在所有 Linux 发行版中执行而无需重新编译的 C/C++ 源代码?

如果答案是肯定的,我可以使用任何外部(非标准 C/C++)库吗?

我想分发我的二进制应用程序而不是分发源代码。

最佳答案

不,您不能编译在所有 Linux 发行版中执行的可执行文件。但是,您可以编译一个适用于人们倾向于关心的大多数发行版的可执行文件。

  1. 编译 32 位。编译为您愿意支持的最低 CPU 级别。

  2. 构建您自己的 glibc 版本。使用 --enable-kernel 选项设置您愿意支持的最低内核版本。

  3. 编译您计划自己使用的所有其他库。使用 glibc 构建中的 header 和您选择的 CPU/编译器标志。

  4. 静态链接。

  5. 对于您无法静态链接的任何内容(例如,如果您需要访问系统的默认名称解析或需要 PAM),您必须设计自己的帮助进程和 API。将源代码发布到帮助程序进程并让他们(或您的安装程序)编译它。

  6. 在您需要支持的所有平台上进行彻底测试。

如果某些库调用了无法使用此机制的函数,您可能需要调整它们。这包括 dlopengethostbynameiconv_open 等。 (这些类型的函数基本上依赖于动态链接。参见上面的第 5 步。链接这些函数时会收到警告。)

此外,如果您不小心,时区往往会中断,因为您的代码可能无法理解系统的区域格式或区域文件位置。 (您不会收到这些警告。它只是行不通。)

大多数这样做的人都在构建时使用最低支持的 CPU 是 Pentium 4,最低支持的内核版本是 2.6.0。

关于c++ - 是否可以编译在所有 Linux 发行版中执行的 C/C++ 源代码而无需重新编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com