在不同操作系统中测试程序

Ale*_*x F 3 unix linux testing

我想通过将程序安装在不同的操作系统版本中来测试它。我的开发计算机是 Ubuntu。我还可以通过在 VirtualBox 中安装并运行我的程序来测试哪些其他 Linux 版本?

虽然现在对我来说并不重要,但我想尝试一些不同的东西,看看会发生什么。

另外,在 Linux 中运行的程序在 Unix 操作系统中运行的可能性有多大?该程序不是开源的,我只能分发预构建的二进制文件。

bma*_*ies 5

让我们从顶部开始。您已经使用某种编程语言在某些 Linux 发行版上构建了一个程序。你还没有告诉我们是哪一个。

如果它是用 C 语言编写的,那么你的前两个问题是硬件和 glibc。就硬件而言,我主要指的是 32 位与 64 位,但值得注意的是 Linux 运行在 PPC、ARM 和 SPARC 上。

如果您有64位系统,则可以运行32位VM并进行测试。

为较新版本的 glibc 编写的程序通常可以在较旧的版本上运行,但反之则不然。因此,如果您需要支持较旧的发行版,则必须在那里进行构建。

对于大多数程序来说,glibc 版本足以替代内核版本,但如果您足够努力,您也可以创建内核版本依赖项。

如果您的程序是 C++,那么您还有一个额外的担忧:C++ / libstdc++ 运行时。并非所有发行版都具有运行所有可能的程序所需的共享库。

在某些情况下,编译并链接到旧版本 g++ 的程序将无法在较新的发行版上找到所需的 libstdc++。

然后你提到“Unix”。在现代世界中,从任何实际意义上讲,都不存在 Unix 这样的东西。您可能想要支持多种系统,但您可能在这里担心>

  1. BSD 系列:netbsd/freebsd。您可以在虚拟机中运行它们。你不能指望二进制文件能够传播。
  2. (开放)Solaris:您可以在虚拟机中运行它,至少对于英特尔芯片来说是这样。你不能指望二进制文件能够传播。
  3. HP-UX:您无法在虚拟机中运行它。
  4. AIX:您不能在虚拟机中运行它。

维护在整个动物园中运行的代码是一项艰巨的工作,不能轻易完成。