项目移植[ 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本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤