简介
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 视图
图 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 启动器配置
图 10. QEMU 启动器配置
-
现在,需要选择应用程序。单击 Browse,会显示 Program Selection 对话框。
图 11. 二进制选择
-
单击 OK。这会自动填写所有必填字段。必填字段是 QEMU 位置和路径,这是运行应用程序所需库的存放位置。
重要提示:如果您的应用程序依赖具体的库,则需要在运行应用程序之前处理此依赖关系。
图 12. 必填字段
图 12. 必填字段
-
要设置新库的位置,请单击 Libraries Paths 部分的 Browse。
图 13. 库路径管理器
-
在 Libraries Paths 对话框中,可以使用选项 New Path 或 Remove 来添加或删除路径位置。
一个可选的步骤是设置 QEMU 选项。选择一个选项时,此选项的输出将包含在名为 qemu.log 的文件中,此文件显示在 Project Explorer 选项卡下。可用的选项如下图所示。
图 14. QEMU 选项
图 14. QEMU 选项
如果将鼠标指针移动到任意选项上,可以看到有关此选项的简单介绍(或工具提示)。例如,如果将鼠标指针移动到选项 int 上,可用看到如下图所示的描述。
图 15. 快速提示
配置了所有选项来运行应用程序后,单击 Run。可以在 Console 选项卡中看到输出结果。
图 16. 运行应用程序
重要提示:如果选择了任意 QEMU 选项,则需要在运行应用程序之后更新应用程序,以便可以看到 qemu.log。
支持
本文所展示的工具都是免费的。可以在 developerWorks 的社区支持中找到这些工具的用户支持。可以通过 developerWorks 相关论坛提交问题、建议和帮助请求,专家将负责这些内容的审核。
参考资料
请参见以下参考资料,了解有关 IBM SDK、IBM Advance Toolchain、交叉编译和 QEMU 的更多信息。
- SDK
- IBM Advance Toolchain
- 交叉编译器
- QEMU
- 如果您想了解如何使用交叉编译器构建应用程序,请按照 使用 Advance Toolchain 交叉编译器进行构建 介绍的步骤进行操作。
- 访问 developerWorks Linux 专区,了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
转自 http://www.ibm.com/developerworks/cn/linux/l-c-cpp-applications-linux-on-power/index.html?ca=drs-