目次


Linux on Power システム用に C/C++ でクロスコンパイルされたアプリケーションを開発する

クロスコンパイル、QEMU ユーザー・モード、IBM SDK for Linux on Power の簡単な紹介

Comments

はじめに

IBM Software Development Kit (SDK) for Linux on Power は、無料で利用できる Eclipse ベースの統合開発環境 (IDE) です。この SDK によって、Advance Toolchain、ポストリンク最適化ツール、従来の Linux パフォーマンス分析ツール (OProfile、Perf、Valgrind など) が、C/C++ ソース開発環境に統合されます。

この記事では、IBM SDK for Linux on Power によって提供される統合環境で、IBM Advance Toolchain と QEMU ユーザー・モードを使用して Linux on Power 用にクロスコンパイルされたアプリケーションを開発する方法を説明します。QEMU ユーザー・モードを使用すると、ある特定のプロセッサー上で実行するようにコンパイルされたアプリケーションを、別のアーキテクチャーのプロセッサー上で実行してデバッグすることができます (つまり、クロスコンパイル/デバッグが可能になります)。

要件

SDK 内で QEMU ユーザー・モード を使用するには、IBM Advance Toolchain クロスコンパイラー、QEMU ユーザー・モード、IBM SDK for Linux on Power をインストールする必要があります。

この記事では、以下のバージョンを使用しました。

  • IBM Advance Toolchain クロスコンパイラー 8.0-1
  • IBM SDK for Linux on Power 1.6
  • QEMU ユーザー・モード

重要: この記事の執筆中に IBM SDK for Linux on Power 1.6 がリリースされましたが、その時点では ppc64le (Linux on Power のリトルエンディアン・バージョン) のサポートを有効にするパッケージは提供されていませんでした。そのため、SDK チームは最新の改善を提供するインストール可能パッケージを作成しました。

使用した運用システムは、Fedora 20 です。

IBM Advance Toolchain クロスコンパイラーをインストールする

IBM Advance Toolchain for PowerLinux は、最新の IBM Power ハードウェアが提供する (この原文記事が公開される時点での) 最先端の機能を Linux 上で利用することを可能にする、オープンソースの開発ツールとランタイム・ライブラリーの集まりです。これらの機能には、以下のものがあります。

  • IBM POWER8 のイネーブルメント
  • POWER8 用に最適化されたスケジューラー
  • POWER8 トランザクション・メモリーのイネーブルメント
  • OWER8 暗号操作のイネーブルメント
  • POWER8 フュージョンのイネーブルメント

IBM Advance Toolchain クロスコンパイラーをインストールするには、以下の手順に従います。

  1. AT 8.0-1 cross の共通パッケージをダウンロードします。
  2. AT 8.0-1 cross の ppc64le 版をダウンロードします。
  3. 以下のコマンドを実行して両方のパッケージをインストールします。
    1. $sudo yum install -y ./advance-toolchain-at8.0-cross-common-8.0-1.x86_64.rpm
    2. $sudo yum install -y ./advance-toolchain-at8.0-cross-ppc64le-8.0-1.x86_64.rpm

以上のコマンドを実行すると、AT 8.0-1 cross が /opt/at8.0 にインストールされて使用可能な状態になることがわかります。

IBM SDK for Linux on Power の x86_64 版をインストールする

IBM SDK for Linux on Power の x86_64 版は、IBM Advance Toolchain クロスコンパイラーのバージョン 7.0-1、7.1-0、および 8.0-1 をサポートしています。この SDK は、同期プロジェクトを作成するために使用することもできます。同期プロジェクトを作成すれば、リモート IBM Power サーバーを使用してアプリケーションを開発することができます。

同期プロジェクトの作成方法についての詳細は、SDK のユーザー・ガイドを参照してください。Power サーバーへのアクセスが必要な場合は、MiniCloud Web サイトにアクセスしてリクエストを送信します。このサイトから Power にアクセスするのは無料です!

SDK のインストールに話を戻すと、インストールは以下の手順に従います。

  1. IBM SDK for Linux on Power の x86_64 版をダウンロードします。
  2. 以下のコマンドを実行してパッケージをインストールします。

$sudo yum install -y ./ibm-sdk-lop-1.6.0-1.x86_64.rpm

QEMU ユーザー・モードをインストールする

QEMU は、オープンソースの汎用的なマシン・エミュレーター兼バーチャライザーです。QEMU ユーザー・モードでは、ある特定のプロセッサー用にコンパイルされたプロセスを別のプロセッサーで起動することができるため、クロスコンパイルされたアプリケーションの実行およびデバッグが可能になります。

IBM SDK for Linux on Power のバージョン 1.6 がリリースされた時点で、サポート対象のディストリビューション内で使用可能な QEMU ユーザー・モードのバージョンには、ppc64le のサポートを提供するパッチが含まれていませんでした。こうした状況に対処するために、SDK チームはインストール可能パッケージを作成しました。

QEMU ユーザー・モードをインストールするには、以下の手順に従います。

  1. QEMU user-mode パッケージをダウンロードします。
  2. 以下のコマンドを実行してパッケージをインストールします。

$sudo yum install -y ./qemu-user-space-emulator-1-1.x86_64.rpm

これで、QEMU は使用できる状態になりますが、QEMU の最新バージョンを使用したい場合には、ローカルで最新バージョンをビルドすることができます。そのプロセスは至って単純なので、以下にその手順を記載しておきます。

手順を開始する前に、Git がインストールされていることを確認してください。

  1. 以下のコマンドを使用して、QEMU ソース・コードを複製します。
    1. git clone git://git.qemu.org/qemu.git
    2. cd ./qemu
  2. 以下のコマンドを使用して、ビルド・ディレクトリーを作成します。
    1. mkdir -p bin/debug/native
    2. cd bin/debug/native
  3. 以下のコマンドを使用して、依存関係をインストールします。
    $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
  4. 以下のコマンドを使用して、プロジェクトを構成します。
    ../../../configure --disable-debug-tcg --enable-tcg-interpreter --target-list="ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user" --disable-vnc --extra-cflags="-O3"
  5. 以下の make コマンドを実行します。
    make -j5
  6. 以下のコマンドを使用して、QEMU バイナリーをインストールします。
    $sudo make install

重要: インストールが完了した時点で、QEMU バイナリーは /usr/local/bin に配置されますが、SDK では、これらのバイナリーが /opt/ibm/qemu-user-space-emulator に配置されていることを前提としています。この状況に対処するには、以下のステップを実行します。

  1. 以下のコマンドを使用して、ディレクトリーを作成します。
    $sudo mkdir -p /opt/ibm/qemu-user-space-emulator
  2. 以下のコマンドを使用して、/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++ でクロスコンパイルされるアプリケーションの開発を始めることができます。

  1. 最初のステップは、SDK を起動することです。ユーザー・インターフェースまたはコマンド・ラインで SDK を選択することによって起動することができます。
    • ユーザー・インターフェースを使用する場合:
      IBM SDK for Linux on Power 1.6 を検索します。
    • コマンド・ラインを使用する場合:
      次のコマンドを実行します: /opt/ibm/ibm-sdk-lop/ibm-sdk-lop

    SDK の起動時に、ワークスペースを選択するよう求めるプロンプトが出されます。

    図 1. ワークスペースの定義
    ワークスペースを定義する画面のスクリーンショット
    ワークスペースを定義する画面のスクリーンショット

    ワークスペースが定義されると、SDK が読み込まれて、使用できるようになります。

    図 2. SDK のパースペクティブ
    SDK のパースペクティブ
    SDK のパースペクティブ
  2. ここからは、クロスコンパイルされるプロジェクトの作成に取り掛ります。「Getting Started (開始)」タブで、「New IBM Advance Toochain C Project (新規 IBM Advance Toochain C プロジェクト)」または「New IBM Advance Toochain C++ Project (新規 IBM Advance Toochain C++ プロジェクト)」のいずれかを選択します。

    図 3. プロジェクトのタイプの選択
    プロジェクトのタイプを選択する画面のスクリーンショット
    プロジェクトのタイプを選択する画面のスクリーンショット
  3. 必要なプロジェクトのタイプを選択した後は、新規プロジェクトの構成を設定する必要があります。具体的には、プロジェクトの名前、場所、タイプ、ツール・チェーンなどを設定します。

    図 4. プロジェクトの構成
    プロジェクトを構成する画面のスクリーンショット
    プロジェクトを構成する画面のスクリーンショット
  4. プロセッサーのタイプを選択して、アプリケーションを調整することもできます。

    図 5. アプリケーションの調整
    アプリケーションを調整する画面のスクリーンショット
    アプリケーションを調整する画面のスクリーンショット
  5. 「Finish (完了)」をクリックして、前に作成したワークスペースにプロジェクトをセットアップします。これにより、新規プロジェクトが「Project Explorer (プロジェクト・エクスプローラー)」タブに配置されます。

    図 6. プロジェクト構造
    プロジェクト構造を示す画面のスクリーンショット
    プロジェクト構造を示す画面のスクリーンショット

クロスコンパイルされたプロジェクトをビルドする

プロジェクトが作成されたので、次はビルドの作業に移ります。プロジェクトを選択して右クリックし、「Build Project (プロジェクトのビルド)」をクリックします。

図 7. プロジェクトをビルドするためのメニュー
プロジェクトをビルドするためのメニューのスクリーンショット
プロジェクトをビルドするためのメニューのスクリーンショット

ビルド・プロセスが完了すると、「Project Explorer (プロジェクト・エクスプローラー)」タブの「Binaries (バイナリー)」ノードの下に、クロスコンパイルされたバイナリーが表示されます。

図 8. ビルド後のプロジェクト・エクスプローラー
ビルド後のプロジェクト・エクスプローラーのスクリーンショット
ビルド後のプロジェクト・エクスプローラーのスクリーンショット

QEMU ユーザー・モードを使用してクロスコンパイルされたプロジェクトを実行する

QEMU ユーザー・モードを使用してクロスコンパイルされたプロジェクトを実行するには、以下の手順を実行します。

  1. プロジェクトを選択して右クリックし、「Run As (実行)」 → 「Qemu」の順にクリックします。
    図 9. クロスコンパイルされたアプリケーションを QEMU で実行するための操作
    クロスコンパイルされたアプリケーションを QEMU で実行するための操作のスクリーンショット
    クロスコンパイルされたアプリケーションを QEMU で実行するための操作のスクリーンショット

    アプリケーションを QEMU で実行するのは、これが初めてなので、アプリケーションの新規ランチャーを構成する必要があります。

    図 10. QEMU ランチャーの構成の編集
    QEMU ランチャーの構成を編集する画面のスクリーンショット
    QEMU ランチャーの構成を編集する画面のスクリーンショット
  2. この構成画面では、アプリケーションを選択する必要があります。「Browse (参照)」をクリックすると、「Program Selection (プログラムの選択)」ダイアログ・ボックスが表示されます。

    図 11. バイナリーの選択
    バイナリーの選択画面のスクリーンショット
    バイナリーの選択画面のスクリーンショット
  3. 「OK」をクリックします。すると、すべての必須ファイルに自動的にデータが取り込まれます。必須フィールドは、QEMU の場所と、アプリケーションを実行するために必要なライブラリーが配置されているパスです。

    重要: アプリケーションが特定のライブラリーに依存している場合、アプリケーションを実行する前に、それらの依存関係に対処する必要があります。

    図 12. 必須フィールド
    必須フィールドのスクリーンショット
    必須フィールドのスクリーンショット
  4. 新しいライブラリーの場所を設定するには、「Libraries Paths (ライブラリーのパス)」セクションで「Browse (参照)」をクリックします。

    図 13. ライブラリー・パス・マネージャー
    ライブラリー・パス・マネージャー
    ライブラリー・パス・マネージャー
  5. 「Libraries Paths (ライブラリーのパス)」ダイアログ・ボックスでは、「New Path (新規パス)」オプションや「Remove (削除)」オプションを使用して、パスの場所を追加または削除することができます。

    必要に応じて、QEMU のオプションを設定することができます。オプションを選択すると、その出力が qemu.log という名前のファイルに格納されます。このファイルは、「Project Explorer (プロジェクト・エクスプーラー)」タブに表示されています。以下の図に、使用可能なオプションを示します。

    図 14. QEMU のオプション
    QEMU のオプション選択画面のスクリーンショット
    QEMU のオプション選択画面のスクリーンショット

    いずれかのオプションにマウスのポインターを合わせると、そのオプションに関する簡単な説明 (ツールチップ) が表示されます。例えば、マウスのポインターをオプション「int」に合わせると、以下の図に示す説明が表示されます。

    図 15. クイック・ヒント
    クイック・ヒントのスクリーンショット
    クイック・ヒントのスクリーンショット

    アプリケーションの実行オプションをすべて構成したら、「Run (実行)」をクリックします。すると、「Console (コンソール)」タブで出力を確認することができます。

    図 16. アプリケーションの実行
    アプリケーションの実行出力コンソールのスクリーンショット
    アプリケーションの実行出力コンソールのスクリーンショット

    重要: QEMU のいずれかのオプションを選択した場合、アプリケーションの実行後に qemu.log を確認できるようにするには、アプリケーションを更新する必要があります。

サポート

この記事で取り上げたツールは、いずれも無料で使用することができます。これらのツールのユーザー・サポートは、developerWorks のコミュニティー・サポートを介して提供されます。コミュニティーのフォーラムから質問、コメント、ヘルプのリクエストを送信すると、エキスパートによってその内容が検討されます。

参考文献

IBM SDK for Linux on Power、IBM Advance Toolchain、クロスコンパイル、QEMU の詳細については、以下のリソースを参照してください。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=1000692
ArticleTitle=Linux on Power システム用に C/C++ でクロスコンパイルされたアプリケーションを開発する
publish-date=03262015