简介IBM® Software Development Kit (SDK) for Linux on Power 是免费的基于 Eclipse 的集成开发环境(integrated development environment,IDE)。此 SDK 集成了 C/C++ 源代码开发与 Advance Toolchain、Post-Link Optimization 和典型的 Linux 性能分析工具,包括 Oprofile、Perf 和 Valgrind。 本文介绍如何通过 IBM SDK 提供的集成环境使用 IBM Advance Toolchain 和 QEMU 用户模式为 Linux on Power 开发交叉编译应用程序,这样做允许运行和调试针对一个处理器编译的应用程序,使其在另一个拥有不同架构的处理器上运行(这就是交叉编译/调试)。
要求 为使用 SDK 中的 QEMU 用户模式,需要安装 IBM Advance Toolchain 交叉编译器、QEMU 用户模式和 IBM SDK for Linux on Power。 出于本文的目的,我们使用了以下版本: - IBM Advance Toolchain cross compiler 8.0-1
- IBM SDK for Linux on Power 1.6
- QEMU 用户模式
重要提示:在编写本文时,SDK 1.6 已推出,但还未提供支持 ppc64le(Linux on Power 的小端版本)的软件包。为了提供最新的改进,SDK 团队为它创建了一个可安装的软件包。 使用的操作系统是 Fedora 20。
安装 IBM Advance Toolchain 交叉编译器 IBM Advance Toolchain for PowerLinux™ 是一组开源开发工具和运行时库,它使用户能够在 Linux 上利用以下最新的 IBM Power® 硬件特性(在本文发布时): - IBM POWER8™ 支持
- POWER8 优化的调度程序
- POWER8 Transactional Memory 支持
- OWER8 Crypto Operations 支持
- POWER8 Fusion 支持
执行以下步骤来安装 IBM Advance Toolchain 交叉编译器。 - 下载 AT 8.0-1 交叉编译器的通用包
- 下载 AT 8.0-1 交叉编译器的 ppc64le 版本
- 运行以下命令来安装两种包:
$sudo yum install -y ./advance-toolchain-at8.0-cross-common-8.0-1.x86_64.rpm $sudo yum install -y ./advance-toolchain-at8.0-cross-ppc64le-8.0-1.x86_64.rpm 您会注意到,AT 8.0-1 交叉编译器已安装且目录为 /opt/at8.0。
安装 x86_64 版本的 SDK x86_64 版本的 IBM SDK 支持 IBM Advance Toolchain 交叉编译器版本 7.0-1、7.1-0 和 8.0-1。还可以使用它创建同步项目,这允许使用远程 IBM Power 服务器开发应用程序。 有关如何创建同步项目的更多信息,请参见 SDK 用户指南。如果您想访问 Power 服务器,请访问 MiniCloud 网站并提交您的请求。它是免费的! 返回到 SDK 安装。按照以下步骤进行操作: - 下载 x86_64 版本的 IBM SDK for Linux on Power
- 运行以下命令以安装软件包。
$sudo yum install -y ./ibm-sdk-lop-1.6.0-1.x86_64.rpm
安装 QEMU 用户模式 QEMU 是一个广泛使用的开源计算机模拟器和虚拟机。此用户模式允许在一个处理器上启动针对另一个处理器编译的程序,这样就可以运行和调试交叉编译应用程序。 当 SDK 1.6 发布时,所支持的发行版中可用的 QEMU 用户模式版本并未包含支持 ppc64le 的补丁。为了克服这种情况,SDK 团队为它创建了一个可安装的包。 要安装 QEMU 用户模式,请执行以下步骤。 - 下载 QEMU user-mode 软件包。
- 运行以下命令来安装此软件包。
$sudo yum install -y ./qemu-user-space-emulator-1-1.x86_64.rpm
现在,QEMU 可 直接投入使用,但是如果您想使用最新版的 QEMU,可以在本地构建它。这个过程非常简单,步骤如下所示: 在您开始之前,确保已安装了 Git。 - 使用以下命令克隆 QEMU 源代码:
git clone git://git.qemu.org/qemu.git cd ./qemu - 使用以下命令创建构建目录:
mkdir -p bin/debug/native cd bin/debug/native - 使用以下命令安装依赖项:
$sudo yum install -y zlib.x86_64 glibc-devel.x86_64 zlib-devel.x86_64 pixman-devel.x86_64 libfdt-devel.x86_64 glib2-devel.x86_64 - 使用以下命令配置项目:
../../../configure --disable-debug-tcg --enable-tcg-interpreter --target-list="ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user" --disable-vnc --extra-cflags="-O3" - 运行以下 make 命令。
make -j5 - 使用以下命令安装 QEMU 库。
$sudo make install 重要提示:安装完成之后,QEMU 库位于 /usr/local/bin 下,但 SDK 希望它们的目录为 /opt/ibm/qemu-user-space-emulator。以下步骤提供了一种解决此问题的方法: - 使用以下命令创建目录:
$sudo mkdir -p /opt/ibm/qemu-user-space-emulator - 使用以下命令将库从 /usr/local/bin 复制到 /opt/ibm/qemu-user-space-emulator:
$sudo cp /usr/local/bin/qemu-ppc64 /usr/local/bin/qemu-ppc64abi32 /usr/local/bin/qemu-ppc64le /opt/ibm/qemu-user-space-emulator
创建交叉编译项目 使用 IBM SDK for Linux on Power 创建交叉编译项目非常简单。完成 Advance Toolchain、QEMU 和 SDK 的安装后,就可以开始开发 C/C++ 交叉编译应用程序了。 - 第一步是启动 SDK。可以通过在用户界面选择 SDK 或者使用命令行来启动它。
- 使用用户界面:
搜索 IBM SDK for Linux on Power 1.6。 - 使用命令行:
运行以下命令:/opt/ibm/ibm-sdk-lop/ibm-sdk-lop 当 SDK 启动时,将提示您选择工作区。 图 1. 定义工作区 定义了工作区之后,就可以使用 SDK。 图 2. SDK 视图 -
现在,您可以创建交叉编译项目了。在 Getting Started 选项卡中,选择 New IBM Advance Toochain C Project 或 IBM Advance Toolchain C++ Project。 图 3. 选择项目类型  -
选择了所需的项目类型后,需要配置新项目,包括名称、位置、类型和工具链。 图 4. 项目配置  -
还可以通过选择处理器类型来调优应用程序。 图 5. 调优应用程序  -
单击 Finish 以在之前创建的工作区中设置项目。它将位于 Project Explorer 选项卡中。 图 6. 项目结构 
构建交叉编译项目 现在已经创建了项目,可以开始构建它了。选择项目,右键单击并选择 Build Project。 图 7. 构建项目
构建过程完成之后,交叉编译库会出现在 Project Explorer 选项卡下的 Binaries 节点中。 图 8. 构建结果
使用 QEMU 用户模式运行交叉编译项目 要使用 QEMU 用户模式运行交叉编译项目,需要执行以下步骤。 - 选择您的项目,右键单击,然后单击 Run As → Qemu。
图 9. 使用 QEMU 运行交叉编译应用程序 由于这是您第一次尝试使用 QEMU 运行应用程序,因此需要为应用程序配置一个新的启动器。 图 10. QEMU 启动器配置 -
现在,需要选择应用程序。单击 Browse,会显示 Program Selection 对话框。 图 11. 二进制选择  -
单击 OK。这会自动填写所有必填字段。必填字段是 QEMU 位置和路径,这是运行应用程序所需库的存放位置。 重要提示:如果您的应用程序依赖具体的库,则需要在运行应用程序之前处理此依赖关系。 图 12. 必填字段 -
要设置新库的位置,请单击 Libraries Paths 部分的 Browse。 图 13. 库路径管理器  -
在 Libraries Paths 对话框中,可以使用选项 New Path 或 Remove 来添加或删除路径位置。 一个可选的步骤是设置 QEMU 选项。选择一个选项时,此选项的输出将包含在名为 qemu.log 的文件中,此文件显示在 Project Explorer 选项卡下。可用的选项如下图所示。 图 14. QEMU 选项 如果将鼠标指针移动到任意选项上,可以看到有关此选项的简单介绍(或工具提示)。例如,如果将鼠标指针移动到选项 int 上,可用看到如下图所示的描述。 图 15. 快速提示 配置了所有选项来运行应用程序后,单击 Run。可以在 Console 选项卡中看到输出结果。 图 16. 运行应用程序 重要提示:如果选择了任意 QEMU 选项,则需要在运行应用程序之后更新应用程序,以便可以看到 qemu.log。
支持 本文所展示的工具都是免费的。可以在 developerWorks 的社区支持中找到这些工具的用户支持。可以通过 developerWorks 相关论坛提交问题、建议和帮助请求,专家将负责这些内容的审核。
参考资料 请参见以下参考资料,了解有关 IBM SDK、IBM Advance Toolchain、交叉编译和 QEMU 的更多信息。 转自 http://www.ibm.com/developerworks/cn/linux/l-c-cpp-applications-linux-on-power/index.html?ca=drs- |