我必须编写一个可以在 HP UX 和 Sun Solaris 上运行的 C 程序。 我们必须在两台机器上构建可执行文件吗? 有没有办法使用标准编译器/链接器在 Linux(例如 centos 或 ubuntu)上构建以确保可执行文件能够在 HP 和 Solaris 机器上运行?
最佳答案
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 类型,由于环境的大小(它们都不是完全嵌入式操作系统......)而具有挑战性。在许多情况下,开始购买一 block 较旧的 PA-RISC/Itanium 或 SPARC 硬件,分别安装 HP/UX 11.x 和 Solaris 10,并进行本地编译可能会更具成本效益/更快。您还将获得在那里使用供应商编译器的好处,对于 Itanium 和 SPARC,它们生成的代码仍然比 GCC 更快。
关于c - 构建面向 HP/Solaris 操作系统的 c 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15265030/