移植平台最简单的定义可能是在次要平台上构建应用程序。本文讨论 AIX® 中与移植相关的内容。

Brad Cobb, 资深技术顾问, IBM  

十多年来,Brad 一直在帮助 ISV 在 AIX 上移植、调优、调试和增强应用程序。除了帮助 ISV 之外,Brad 还喜欢申请专利、发表文章和在开发人员会议上演讲。



2009 年 12 月 16 日

简介

软件开发平台已经从大型机发展到小型机,再到 UNIX® 系统和 Microsoft Windows®,最近发展到了 Intel x86 Linux® 系统。在 20 世纪 80 年代中期到 90 年代,Hewlett Packard、IBM®、Silicon Graphics 和 Sun Microsystems 等公司提供的 UNIX 系统试图成为主流的开发平台。但是,个人计算机出现了,由于其可以以低廉的成本在每个开发人员的桌面上提供系统,很快就占据了开发平台市场。目前,个人计算机主要提供基于 Microsoft Windows 和 Linux 的开发环境,这使 UNIX 系统成了次要平台(也称为移植平台)。本文讨论与 AIX 相关的移植步骤。


移植步骤

把应用程序移植到另一个平台大体上与开发新的软件产品相同,但是大多数设计和开发工作是在另一个硬件平台上完成的。从移植的角度来看,移植过程由以下步骤组成:


构建

构建把应用程序源代码编译为二进制对象,然后把二进制对象链接在一起,形成可执行的二进制代码,这就是可以在 AIX 等操作系统上运行的应用程序。要想构建应用程序,开发人员需要包含 AIX 二进制代码的开放源码存储库、用于创建二进制对象的编译器、用于自动执行构建过程的 make 以及用于创建可执行程序和共享库/对象的链接器/装载器。

开放源码存储库

在这个变化迅速的世界中,快速应用程序开发是必需的,开放源码项目是独立软件生产商快速开发应用程序的方法之一。开放源码项目和相关的工具、库等的主要问题是,这些工具在 AIX 上是否可用。好在,有许多存储库,比如:

  • AIX Toolbox 提供一套常用的开放源码工具和资源。
  • BULL 提供大型开放源码工具 存储库,这些工具支持各种 AIX 版本(4.3.3、5L 和 6.1)。
  • Hudson Valley Community College 提供 pWare,这是一个用于 IBM AIX 5.3 和 6.1 下载站点的 AIX 开放源码软件。

编译器

IBM 提供针对 C、C++、FORTRAN for AIX 和 Java™ 的编译器。另外,在 AIX Toolbox 中,IBM 还提供 GNU 编译器。产品信息和文档见 参考资料

make

AIX 提供一个版本的 make,带有相应的 bos.adt.base 文件集,此外还在 AIX Toolbox 中提供了 gmake。

链接

通过链接对象创建可执行程序以及共享的库和对象,这可能是把应用程序移植到 AIX 时最困难的一步。关于轻松地移植到 AIX 的更多信息见 参考资料


调试

调试就是在移植平台上调试应用程序,纠正在应用程序中发现的 “bug”。下面是 AIX 上最常用的调试器:

  • dbx 是 AIX 的标准调试器。它是一个命令行调试器。
  • kdb 与 dbx 相似,但它是内核调试器。
  • IBM debugger 是一个基于 GUI 的调试器,可以在 AIX 本地运行,也可以在 Microsoft Windows 上远程运行。
  • gdb 是 GNU 调试器。它与 dbx 相似,也是命令行调试器。
  • GNU Data Display Debugger 为 dbx 和 gdb 提供了 GUI 界面。

调优

调优常常被忽视,这个步骤运行应用程序并分析性能,判断哪些领域可以通过展开循环、应用更高的优化级别等技术改进。

  • 优化

    优化有两种基本类型,手工优化和自动优化。

    手工优化 分析可执行程序的性能,识别需要调整的代码,让代码在给定的平台上执行得更好。一种可以帮助手工优化的工具是剖析(稍后讨论)。手工优化既是科学,也是艺术。要想执行手工优化,必须了解底层处理器体系结构,从而充分地了解应该如何重构代码才能在给定的硬件平台上实现良好的性能。现代编译器常常采用的一种技术是展开循环。这种技术的主要目标是尽可能优化缓存的使用,减少系统在执行给定的操作时必须获取数据并把数据放进缓存的次数。通过使用这种技术,10 行的矩阵相乘例程可以展开成数百行代码,性能可以提高几个数量级。

    自动优化 是使用最广泛的技术,因为这种优化常常由编译器执行。最常用的技术包括:

    • 更高的优化级别。这使用编译器标志 -O、-O2、-O3(优化级别依次增高)来进一步挖掘性能潜力。随着优化级别的提高,编译源代码所用的编译时间和系统资源增加,而性能的提升幅度下降。因此,大多数代码都用 –O 或 –O2 编译,只有特殊的代码用更高的优化级别编译。
    • 与硬件相关的优化。在 AIX 上,这通常意味着使用 –qarch=architecture 和 –qtune=architecture,其中的 architecture 是微处理器体系结构。–qarch 标志引入指定的微处理器特有的硬件指令。如果指定 –qarch 标志,那么生成的二进制代码只能在指定的微处理器体系结构上运行。另一方面,–qtune 不引入微处理器体系结构特有的指令,而是按照在指定的微处理器体系结构上性能最优的方式调整代码。
    • 基于反馈的程序重构技术用于根据给定的工作负载调整可执行程序。在使用这种技术时,会收集关于给定工作负载的数据(比如剖析),然后以优化此工作负载的方式使用这些数据重构应用程序二进制代码。更多信息参见 http://www.haifa.ibm.com/projects/systems/cot/fdpr/
  • 剖析

    剖析在一段时间内观察可执行程序,了解在这段时间内发生的情况。更具体地说,它要寻找性能不理想的代码区域。AIX 提供以下剖析工具:

    • tprof 工具可以用于寻找出现问题的位置,然后通过微剖析深入探察源代码。要想使用 tprof 执行微剖析,应用程序在编译和链接时必须使用 –g 调试标志。
    • profgprof 要求用 –p 或 –gp 标志编译代码,从而提供调用函数的次数、函数的调用者等信息。这种剖析技术与 tprof 微剖析的主要差异是,微剖析可以分析程序的时间片和整个程序,而 prof 和 gprof 只能分析整个程序。
    • probeVUE 是 AIX 6.1 引入的动态跟踪工具。

结束语

本文向移植工程师介绍了 AIX 平台上可用的各种工具,帮助他们构建、调试和调优移植到 AIX 的应用程序。以后的文章将更深入地讨论移植过程中的构建、调试和调优步骤。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=456884
ArticleTitle=AIX 作为移植平台
publish-date=12162009