如何建立&为许多架构测试C linux程序而不为每个架构设置环境?

时间:2013-02-14 23:33:27

标签: linux architecture

假设我在C中编写了一个简单的程序。它在我的主要拱门上构建并成功运行。

现在我想了解程序可以构建和运行的架构;还提供用于各种平台下载的预构建可执行文件。但是我只有少数几个。

最明显的方法似乎是设置交叉编译工具链的最大数量和不同体系结构的最大可执行映像数。但这似乎很不方便(特别是如果你只想要一个小程序)。

如何以简单的方式做到这一点?我应该使用一些在线服务,它已经为各种架构的开发系统提供了设置吗?

期待这样的事情:

user$ ssh i386.buildhere.example
guest@i386 $ echo 'int main(){}' > hello.c
guest@i386 $ gcc hello.c -o hello
guest@i386 $ ./hello
guest@i386 $ file hello
hello: ELF 32-bit LSB executable, Intel 8038....
user$ ssh armel.buildhere.example
guest@armel $ ....

...

如果还有各种过时的系统可用于测试“我的程序将如何在传统发行版上运行?”,那么还有额外的奖励。

1 个答案:

答案 0 :(得分:3)

在编程中有一件事几乎是肯定的:无论你做什么来测试某些东西都可能有效,但是当你把它交给顾客时,你所测试的任何东西都会失败。

使用虚拟机在某种程度上有助于避免购买异常硬件,就像QEMU这样的东西。

除非您的程序非常简单,或者您希望将您的客户[1]用作试验品,否则最好在您要发布的每种平台类型上进行测试。如果你不这样做,它会在某些时候回来咬你。

如果不这样做,则会冒一些客户获得“不愉快体验”的风险。一个不满意的顾客告诉十个人,一个快乐的顾客可能告诉一个人。

如果您希望支持您无法访问的架构/内容,可能只是拥有源代码的“自助”选项是比可下载二进制文件更好的选择。

当然,您可以在各种类型的服务器上租用时间/空间 - 我考虑编写一个iPhone应用程序,并且有些地方可以将Mac作为虚拟机运行在网络上,您可以每月租金约15美元, 例如。

[1]在整个答案中,客户指的是任何下载软件的人,无论他们是否真的给任何人一些钱,他们都会花费一些精力在你的机器上安装你的软件。如果它不工作,那么他们会不高兴到一定程度。多么不愉快取决于许多事情,包括如果你要发布“未经测试的”软件,你有多清楚“这可能行不通”。