インテル® C++ コンパイラー Android* 向け Linux* 版導入ガイド

 

はじめに

インテル® C++ コンパイラー Android* 向けは、IA-32 アーキテクチャー・ベースの Android* オペレーティング・システム向けに C および C++ アプリケーションを開発するソフトウェア開発者のためのクロス・コンパイラーです。このコンパイラーは、Android* NDK のライブラリーとツールに依存しており、インテル® C++ コンパイラー Android* 向けを利用するには、Android* NDK が必要です。Android* NDK は、http://developer.android.com/sdk/ndk/index.html から入手できます (NDK の最新バージョン r9b が提供されています)。

インテル® C++ コンパイラー Android* 向けは、インテル® C++ コンパイラー 14.0 Linux* 版をベースにしていますが、このバージョンでサポートされるすべての機能が提供されるわけではありません。また、日本語版も提供されません。インテル® C++ コンパイラー Android* 向けでサポートされない機能については、リリースノートをご覧ください。

このドキュメントでは、インテル® C++ コンパイラー Android* 向け固有の導入ガイドを提供し、インテル® C++ コンパイラー 14.0 で提供されるユーザー・リファレンス・ガイドの導入部の代替えとなります。

ターゲット・アプリケーションのビルド

Android* 上で動作する IA-32 システム用アプリケーションを開発するには、次の 2 つの方法があります。

以降の節では、上記の両方の手法に対する一般的なガイドラインを示します。

Android* NDK ビルドシステムでインテル® C++ コンパイラーのツールチェーンを有効にする

インテル® C++ コンパイラー Android* 向けのインストール後、インストール・プログラムは、インテル® コンパイラーを Android* NDK ビルドシステムに統合するために必要なコンポーネントをインストールして自動的に統合を行います。

インテル® C++ コンパイラー Android* 向けを使用してサンプル・アプリケーションをビルドする

インテル® C++ コンパイラーを使用してサンプル・アプリケーションをビルドするには、次のどちらかの手順に従います。

  1. コマンドラインでビルドする
  2. $ $NDK_DIR/ndk-build V=1 -B NDK_TOOLCHAIN=x86-icc APP_ABI=x86

    オプションの意味:

    V=1 詳細な出力を有効にする (オプション)

    -B すべてをリビルドする (オプション)

    APP_ABI ターゲット・アーキテクチャーを指定する

  1. "Application.mk" ファイルを使用する
    1. アプリケーションの jni フォルダーにある “Application.mk” ファイルを開くか作成します。例えば、NDK に含まれる hello-jni サンプル・アプリケーションの場合、"$NDK_DIR/samples/hello-jni/jni/" に “Application.mk” を作成します。

            次の行を Applicatoin.mk に追加します。

            APP_ABI:=x86

            NDK_TOOLCHAIN:=x86-icc

    1. 次のコマンドを実行してアプリケーションをビルドします。

      $ $NDK_DIR/ndk-build V=1 –B

注意:

2 つの方法は類似していますが、重要なことはインテル® C++ コンパイラー Android* 向け (ICC) を使用する場合、APP_ABI と NDK_TOOLCHAIN を設定する必要があることです。いくつかの方法があります。

NDK_TOOLCHAIN := x86-icc

もしくは

NDK_TOOLCHAIN_VERSION := icc

インテル® C++ コンパイラー Android* 向けの複数のバージョンがインストールされている場合、次のように完全なコンパイラー・パッケージのバージョンを指定することができます。
NDK_TOOLCHAIN=x86-icc14.0.0.003

スタンドアロン・コンパイラーとしてインテル® C++ コンパイラー・ツールチェーンを使用する

  1. ターミナルウィンドウを開きます。
  2. 次の手順でインテル® コンパイラーのバイナリーの PATH を設定します。
        $ source [icc-install-dir]/bin/compilervars.sh

        [icc-install-dir] は、コンパイラーのインストール先です。デフォルトは、/opt/intel/cc_android_14.0.0.nnn/ で、nnn はパッケージのビルド番号を示します。

        デフォルトのインストール先を使用している場合、次のコマンドを実行します。 

$ source /opt/intel/cc_android_14.0.0.nnn/bin/compilervars.sh

注意: ANDROID_SYSROOT と ANDROID_GNU_X86_TOOLCHAIN 環境変数の設定を要求するエラーが発生した場合、サポートされない NDK バージョンを利用している可能性があります。手動で環境変数を設定することができます。

        Android* NDK の 32 ビット・バージョンをインストールしている場合、次のように環境変数を設定します。

        $ export NDK_DIR=[Android NDK-install-directory]

$ export ANDROID_SYSROOT=$NDK_DIR/platforms/android-18/arch-x86                     
$ export ANDROID_GNU_X86_TOOLCHAIN=$NDK_DIR/toolchains/x86-4.6/prebuilt/linux-x86

        Android* NDK の 64 ビット・バージョンをインストールしている場合、次のように環境変数を設定します。

        $ export NDK_DIR=[Android NDK-install-directory]

$ export ANDROID_SYSROOT=$NDK_DIR/platforms/android-18/arch-x86                     
$ export ANDROID_GNU_X86_TOOLCHAIN=$NDK_DIR/toolchains/x86-4.6/prebuilt/linux-x86_64

  1. ビルド環境ウィンドウから icc/icpc を起動します。

         C のソースをコンパイルするには “icc” を、C++ のソースをコンパイルするには “icpc” を使用します。

$ cd $NDK_DIR/samples/hello-jni/jni

$ icc -c hello-jni.c

$ icc –shared -o libhello-jni.so hello-jni.o

リリース用アプリケーションをビルドする

NDK は、デフォルトでデバッグ用アプリケーションをビルドするように構成されており、すべての最適化は OFF になっています。コードを配布する準備ができたら、パフォーマンスを向上するようにコンパイルする必要があります。

  1. “Application.mk” を開きます。
  2. 次の行を追加してリリースモードに切り替えます。

    APP_OPTIM=release

  3. プロセッサー固有の命令セットを指定します。例えば、第 1 世代のインテル® Atom™ プロセッサー (コード名 Bonnell) の場合、次の行を追加します。

    APP_CFLAGS:=-xATOM_SSSE3

  4. インテル® C++ コンパイラーの高度な最適化機能を有効にします。例えば、最適化レベルを上げるには次の行を追加します。

    APP_CFLAGS:=-xATOM_SSSE3 –O3

プロシージャー間の最適化 (IPO) を有効にするには、以下のようにします。

APP_CFLAGS:=-xATOM_SSSE3 –O3 –ipo

  1. アプリケーションをビルドします。
  2. オプションとして、ndk-build コマンドへの引数として APP_OPTIM と APP_CFLAGS を渡すことができます。

    $ ndk-build V=1 -B NDK_TOOLCHAIN=x86-icc APP_ABI=x86 APP_OPTIM=release APP_CFLAGS=”-xATOM_SSSE3 –O3 -ipo”

最適化オプションの詳細については、パッケージに含まれる『インテル® C++ コンパイラー XE 14.0 のユーザー・リファレンス・ガイド』の「高レベルの最適化 (HLO)」と「プロシージャー間の最適化 (IPO)」の節を参照してください。

インテル® C++ コンパイラー Android* 向けを Eclipse* で使用する

Eclipse* でインテル® C++ コンパイラーを使用するには、次の手順で Eclipse* と Eclipse* プロジェクトを設定してください。

注意: 事前に Android Developer Toolkit (ADT) がインストールされていなければいけません。

  1. NDK プラグインを利用するよう Eclipse* を設定します。
  2. [Eclipse] > [Window] > [Preferences] > [Android] > [NDK] > [set path to the NDK]

  3. NDK サンプルから新しいプロジェクトを作成します。
  4. a) Eclipse* のメニューから [File] > [New] > [Project …] を選択します。

    b) [Android Project from Existing Code] を選択して [Next] をクリックします。

    c) “[ndk-dir]\samples\hello-jni” ディレクトリーを参照して、[Copy projects into workspace] のチェックボックスをオンにし、[Finish] ボタンをクリックします。

  5. ネイティブサポートを含むようにプロジェクトを設定します。
  6. a) “Native Support” をプロジェクトに追加するには、[Project Explorer] ウィンドウのプロジェクト名を右クリックして、[Android Tools] > [Add native Support …] を選択します。

    b) ライブラリー名を問い合わせるダイアログが開きます。以下のようにライブラリー名に “hello-jni” を設定します。

  7. インテル® C++ コンパイラー Android* 向けを使用するようプロジェクトを設定します。
  8. a) プロジェクト名を右クリックして、[Properties] ウィンドウを開き、[Properties] を選択します。[C/C++ Build] > [Environment] をクリックし、3 つの環境変数を追加します。

    1. NDK= [ndk-dir] (例えば、NDK=/android/android-ndk-r9)
    2. ANDROID_SYSROOT="${NDK}/platforms/android-18/arch-x86"
    3. 64 ビット Android* NDK には、以下を追加します。

      ANDROID_GNU_X86_TOOLCHAIN="${NDK}/toolchains/x86-4.6/prebuilt/linux-x86_64"

      32 ビット Android* NDK には、以下を追加します。

      ANDROID_GNU_X86_TOOLCHAIN=${NDK}/toolchains/x86-4.6/prebuilt/linux-x86

    b) 次の 2 行を追加して “jni” フォルダーの下に新しい “Application.mk” ファイルを作成します。

        APP_ABI:=x86

        NDK_TOOLCHAIN:=x86-icc

  9. プロジェクトをビルドします。
  10. プロジェクト名を右クリックして、[Build Project] を選択します。

  11. これで、アプリケーションを x86 ベースの Android* デバイス (x86 ベースの Android* 仮想デバイス (AVD) を含む) でテストできます。

インテル® C++ コンパイラー Android* 向けの高度な機能を使用する

詳細については、「Android* アプリケーション向けにインテル® C++ コンパイラーの高度な機能を利用する」の記事を参照してください。

次のステップ

製品ドキュメントに記載されていない、製品のインストール、新機能と変更点、そして既知の問題に関しては、リリースノートおよびインストール・ガイドを参照してください。

このパッケージに含まれる、『インテル® C++ コンパイラー14.0 ユーザー・リファレンス・ガイド』も参照してください。

最新の情報については、iSUS のインテル® C++ コンパイラー Android* 向けのページをご覧ください。

$NDK\docs 配下にある NDK ドキュメントを参照してください。

インテル® C++ コンパイラー Android* 向けのご購入のお問い合わせは、エクセルソフト株式会社までお願いいたします。

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® SSE2、インテル® SSE3、インテル® SSSE3 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804


著作権と商標について

本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスも許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商適格性、あらゆる特許権、著作権、その他知的財産権の非侵害性への保証を含む)に関してもいかなる責任も負いません。

インテルによる書面での合意がない限り、インテル製品は、その欠陥や故障によって人身事故が発生するようなアプリケーションでの使用を想定した設計は行われていません。

インテル製品は、予告なく仕様や説明が変更される場合があります。機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。この情報は予告なく変更されることがあります。この情報だけに基づいて設計を最終的なものとしないでください。

本書で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。

最新の仕様をご希望の場合や製品をご注文の場合は、お近くのインテルの営業所または販売代理店にお問い合わせください。

本資料で紹介されている資料番号付きのドキュメントや、インテルのその他の資料を入手するには、1-800-548-4725 (アメリカ合衆国) までご連絡いただくか、インテルの Web サイトを参照してください。

インテル・プロセッサー・ナンバーはパフォーマンスの指標ではありません。プロセッサー・ナンバーは同一プロセッサー・ファミリー内の製品の機能を区別します。異なるプロセッサー・ファミリー間の機能の区別には用いません。詳細については、http://www.intel.co.jp/jp/products/processor_number/ を参照してください。

Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

© 2013 Intel Corporation.無断での引用、転載を禁じます。