c - 构建面向 HP/Solaris 操作系统的 c 程序

标签 c solaris

我必须编写一个可以在 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/

相关文章:

c - 移动主窗口位置或弹出消息框后列表框控件未重绘

c - c != '\n'条件在 "for"循环中的作用是什么(C语言)?

c - 什么会导致 fwrite 挂起?

perl - 从使用 Perl 创建的 Excel 2007 文件中读取标题行时出现问题

sockets - Solaris10中如何发送ACK包

c - epoll:使用具有多个 fd 的结构表时如何识别哪个 fd 已准备好

c++ - "C"中的 char const 太长

c - 发送功能如何工作

c++ - 如何修复内存访问错误

c - Solaris 上的 GDB :/proc/168: Value too large for defined data type