项目移植[ Windows -- Linux/Unix -- AIX/Solaris ]

2024-02-09 22:58

本文主要是介绍项目移植[ Windows -- Linux/Unix -- AIX/Solaris ],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目移植[ Windows --> Linux/Unix --> AIX/Solaris ]

前段时间参与了公司的一个项目,将现有的windwos平台上的系统移植到IBM的小型机AIX5.3系统上。

AIX(Advanced Interactive eXecutive)是IBM开发的一套UNIX操作系统。它符合Open group的UNIX 98行业标准(The Open Group UNIX 98 Base Brand),通过全面集成对32-位和64-位应用的并行运行支持,为这些应用提供了全面的可扩展性。它可以在所有的IBM ~ p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。


对于 Intel的X86系列,Windows平台上是little endian小端模式,而 AIX操作系统是 big endian大端模式。这是最基本的区别。由于当时我们手头上根本没有IBM小型机AIX系统的机器,用户也无法提供这样的环境供我们进行编码,至多提供一个星期的系统测试时间。所以我们当时的方案是:
1.首先将现有的Windows平台系统移植到Linux/Unix系统中(这部分工作比较好做)。
2.然后再将Linux/Unix下的系统移植到AIX系统上(这部分工作好像也很好做)。

这种方案比较可行,而且移入Linxu/Unix的系统也可以作为一个产品,而且Linux/Unix的平台也是比较常见的;其次我们有充分的时间与环境确保移植到Linux/Unix系统的成功实现。我们将来所要面对的问题仅仅就是Linux/Unix移入AIX上的问题,因为都符合Unix标准,因此唯一的问题就是大端小端问题。(AIX5L紧密结合Linux的 UNIX (AIX5L))。AIX带有自己的C++编译器VCL,但是是付费的;为了在移植过程中不产生额外的问题,我们确定在AIX系统上同样采用gcc编译器,并且网上有免费开源的用于AIX系统的gcc,以及相关软件可供下载。

经过大概两个多月的移植工作,我们的系统已能稳定高效的在AIX系统上运行。

相关资料可访问:
我们所有在AIX系统上使用的编译软件都是在这里下载的(gcc,automake tools等)
Large Open Source Software Archive for AIX:http://www.bullfreeware.com/

乐悠LU Unix论坛(很多高手):http://bbs.loveunix.net/ 

ChinaUnix论坛:http://www.chinaunix.net/

AIX的客户端远程连接软件:Xmanger2.0

附:我们实现的大端小端交换代码:
#ifdef _NOT_INTEL_CPU_
#define SWAP_16(a) a = ((unsigned short)(a)>>8)|((unsigned short)(a)<<8);
//#define SWAP_32(a) a = ((unsigned)(a)>>24)|(((unsigned)(a)>>8)&0xFF00)|(((unsigned)(a)<<8)&0xFF0000)|((unsigned)(a)<<24);
#define SWAP_FLOAT(b)        /
{             /
 unsigned &a = *(unsigned *)(&b);     /
 a = (a>>24)|((a>>8)&0xFF00)|((a<<8)&0xFF0000)|(a<<24); /
}
#define SWAP_32(a) swap_32((unsigned long&)a);
inline void swap_32(unsigned long &a)
{
 a = ((unsigned)(a)>>24)|(((unsigned)(a)>>8)&0xFF00)|(((unsigned)(a)<<8)&0xFF0000)|((unsigned)(a)<<24);
}
#else
#define SWAP_16(a)
#define SWAP_32(a)
#define SWAP_FLOAT(b)
#endif
  

这篇关于项目移植[ Windows -- Linux/Unix -- AIX/Solaris ]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695527

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,