gpt4 book ai didi

c++ - 为多个平台构建 Linux 二进制文件

转载 作者:IT王子 更新时间:2023-10-29 00:06:06 26 4
gpt4 key购买 nike

帮我算一笔账。

我有一个用 C++ 编写的软件,它可以在尽可能多的 Linux 发行版上运行,我需要找出一个有效的策略。在这种情况下,我试图运送二进制文件而不是源代码(可能很高兴知道)。 它已经是一个商业产品,我有知识产权问题阻止我开源产品,但也意味着我必须处理无数的 GPL 问题。

目前的推理路线是选择一个最小公分母并以此为基础构建所有内容。这有两个我认为适得其反的主要含义。

  1. 旧版 GCC 中的 C++ 支持缺少一些更现代的 C++ 功能。
  2. 最小公分母需要 Red Hat Enterprise Linux 4 (RHEL4)

我绝对不需要整个 C++11 功能集,但我想将 C++ 支持提高到 Visual C++ 2010 的水平。我正在仔细研究使用 Clang/libc++ 的想法,而不是在可能的情况下使用 GCC/libstdc++。

RHEL4 似乎没有为构建 C++ 应用程序提供广泛的跨平台支持,此外,我对 ABI 在不同 linux 版本上的稳定性知之甚少,但我担心 RHEL4 带来的麻烦大于值(value)。尝试基于少数几个发行版构建所有发行版并不是一个可行的策略。

我假设为不同的 linux 发行版编译软件最好通过使用目标平台上的工具为目标平台编译软件来完成。我目前还假设如果您不接受这一点,您将在 Linux 平台上遇到巨大的可移植性问题。更不用说由于跨平台/发行版的 C++ ABI 不稳定,您可以链接或不能链接的许多库。

但我可能是错的,我想听听定期处理此问题的人员的意见。什么会起作用,为什么?或者更重要的是,什么行不通?

最佳答案

您可以尝试专注于几个主要平台而不是单个发行版。我的意思是建立在我称之为“基础发行版”(Debian 和 RedHat)的基础上,并希望其他发行版能做到最好。

很可能,Debian 二进制文件(静态链接)将在 Ubuntu 和 Mint 以及其他 Debian 派生发行版上运行良好。 RedHat 二进制文件可能会在 Centos、Scientific Linux 和 SuSE Linux 上运行。如果您关心不太受欢迎的发行版(假设您有很多客户运行一些不常见的 Linux),并且您的 Debian 或 RedHat 可执行文件都无法在它们上运行或无法以某种方式运行,那么设置该发行版的 VM 并构建一个可执行文件专门针对那种口味。

我过去采用过这种方法并且效果很好。

关于c++ - 为多个平台构建 Linux 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250831/

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