c – 为多个平台构建linux二进制文件

前端之家收集整理的这篇文章主要介绍了c – 为多个平台构建linux二进制文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
帮我解决一个分数.

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

目前的推理方式是选择一个最小的分母,并构建一切.这有两个重大的影响,我觉得反效果.

>旧版GCC中的C支持缺少一些更现代化的C功能.
>最不常见的特征是Red Hat Enterprise Linux 4(RHEL4)

我绝对不需要整个C11功能集,但是我想将C支持带到Visual C 2010.我认为使用Clang / libc,而不是GCC / libstdc .

对于构建C应用程序来说,RHEL4似乎没有广泛的跨平台支持,更不用说,在不同版本的Linux上,ABI的稳定性几乎没有任何意义,但是我担心RHEL4比值得更麻烦.尝试针对所有发行版本进行构建,这不是一个可行的策略.

我假设编译用于不同Linux版本的软件最好通过使用目标平台上的工具编译目标平台的软件来实现.我现在也在运行这个假设,如果你不接受这个假设,你会遇到巨大的可移植性问题的跨平台的Linux平台.不要谈论许多可以或不能链接的库,因为跨平台/发行版的C ABI不稳定.

但是我可能错了,我想听到有人经常处理这个问题.什么工作,为什么?或者更重要的是,什么不行?

解决方法

您可以尝试专注于几个主要平台,而不是单个发行版.我的意思是建立在我所谓的“基础发行版”(Debian and RedHat)上,并希望对其他人有所了解.

最有可能的是,Debian二进制文件(静态链接)在Ubuntu和Mint以及其他Debian派生版本中运行得很好. RedHat二进制文件可能运行在Centos,Scientific Linux和SuSE Linux上.如果你关心不太流行的发行版(假设你有很多客户运行一些不寻常的Linux),你的Debian或RedHat可执行文件都不能对其进行工作,或者可以做某些工作,然后设置该发行版的VM并构建一个可执行文件专门为这种风味.

我过去采取了这种做法,效果很好.

猜你在找的C&C++相关文章