1

我要写一个可以在HP UX & Sun Solaris 上运行的C 程序。我们是否必须在两台机器上构建可执行文件?有没有办法使用标准编译器/链接器在 Linux 上构建 centos 或 ubuntu 以确保可执行文件将在 HP 和 Solaris 机器上运行?

4

1 回答 1

2

HP/UX 和 Solaris 都在不同的 CPU 类型上运行,因此归结为“您需要支持什么硬件”(除此之外:“它需要在哪个操作系统上运行”)。

首先是 HP/UX:

  • HP/UX 支持 HP 自己的旧 PA-RISC CPU 架构,适用于 32 位和 64 位应用程序
  • HP/UX 也(目前主要是)在 Intel Itanium CPU 上运行

有一些我不是特别熟悉的二进制兼容性/垫片层(Aires),但显然可以为某种类型的 PA-RISC 编译,结果可以在基于 Itanium 的 HP/UX 机器上运行。换句话说,对于 HP/UX,您必须决定应用程序是需要在旧的 32 位 PA-RISC、更高版本的 64 位 PA-RISC 还是在 Itanium 上运行,然后在该目标平台上或在合适的平台上编译 -配置交叉编译设置。

索拉里斯:

  • Solaris 支持 SPARC 处理器:
    32 位模式(对于内核,最高并包括 Solaris 9)和
    64 位模式(从 Solaris 7 开始,以及从 Solaris 10 强制内核代码)
  • Solaris 还支持 Intel/AMD 处理器,包括 32 位和 64 位模式(64 位需要 Solaris 10 及更高版本)

在 SPARC 和 x86 CPU 上,即使内核本身运行 64 位,Solaris 也可以运行 32 位应用程序,但是没有允许您在 x86 上运行 SPARC 二进制文件的仿真/填充层,反之亦然。

因此,在 Solaris 上,您必须决定应用程序是否需要在 SPARC 和/或 x86 上运行,其次是是否需要针对 32 位或 64 位进行编译。

为 Solaris 或 HP/UX 创建交叉编译设置,无论您的目标是哪种 CPU 类型,由于环境的大小(它们都不是完全嵌入式操作系统......),都是具有挑战性的。在许多情况下,开始购买一块较旧的 PA-RISC/Itanium 或 SPARC 硬件,分别安装 HP/UX 11.x 和 Solaris 10,并进行本机编译,可能会更具成本效益/更快。您还将获得使用供应商编译器的好处,对于 Itanium 和 SPARC 而言,它们仍然生成比 GCC 更快的代码。

于 2013-03-08T14:40:31.877 回答