2013/06/19

Arch LinuxにおけるNaClプログラム(C++)の開発環境構築とビルド

Arch Linux上で NaCl(Native Client)の開発環境を構築する際には、
基本的には簡単ですが、Pythonの複数環境の共存など落とし穴があります。
自分用のメモを兼ねて、手順を書いておきます。
(本記事は、2013/06/19 現在において最新状態のArch Linux 64bit版を基にしています。)


まずは、pacmanでmultilibリポジトリを扱うよう設定をします。
具体的には、 /etc/pacman.conf に、[multilib]というセクションがあるので、
そのコメントアウトを解除します。

$ sudo vi /etc/pacman.conf
~~~~
[multilib]
Include = /etc/pacman.d/mirrorlist
~~~~
$ sudo pacman -Syy

さらに、pacmanで、gcc-multilibをインストールします。
$ sudo pacman -Syu gcc-multilib

次に、Python環境について、python2がデフォルトとなるように対策をします。
(※ Arch Linuxには、Python2とPython3の環境が共存している場合がありますが、
今回を含めて殆どはPython2を使うので、PATHに追加することで変更しておきます。いつでも戻せます。)

$ mkdir ~/bin/
$ ln -s /usr/bin/python2 ~/bin/python
$ vi ~/.bashrc
PATH=export PATH=/home/xxxxxx/bin:$PATH
(xxxxxxは、自分のユーザ名。)

あとは、通常どおりにNaCl SDKをダウンロードしてアーカイブを展開します。
(参照: https://developers.google.com/native-client/sdk/download)
$ cd ~
$ wget http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip
$ unzip nacl_sdk.zip
$ rm nacl_sdk.zip
$ cd nacl_sdk/

さらに、naclsdkでPepperAPIを取得して、設定を行います。
$ ./naclsdk update
$ ./naclsdk list
Bundles:
 I: installed
 *: update available

  I  sdk_tools (stable)
     vs_addin (dev)
     pepper_23 (post_stable)
     pepper_24 (post_stable)
     pepper_25 (post_stable)
     pepper_26 (post_stable)
  I  pepper_27 (stable)
     pepper_28 (beta)
     pepper_canary (canary)

All installed bundles are up-to-date.
$ vi ~/.bashrc
~~~~
export NACL_SDK_ROOT='/opt/nacl_sdk/pepper_27'
(pepper_27は、インストールされたPepperAPIのバージョンとする。)

最後に、サンプルがビルドでき、デーモンも実行できることを確認します。
$ cd pepper_27/examples/
$ make
~~~~
make[1]: ディレクトリ `/home/xxxxxx/nacl_sdk/pepper_27/examples/websocket' に入ります
  CXX newlib/Debug/websocket_x86_32.o
  LINK newlib/Debug/websocket_x86_32.nexe
  CXX newlib/Debug/websocket_x86_64.o
  LINK newlib/Debug/websocket_x86_64.nexe
  CXX _newlib/Debug/websocket_arm.o
  LINK newlib/Debug/websocket_arm.nexe
  CREATE_NMF newlib/Debug/websocket.nmf
make[1]: ディレクトリ `/opt/nacl_sdk/pepper_27/examples/websocket' から出ます
Done building targets.

$ python ../tools/httpd.py

Serving /opt/nacl_sdk/pepper_27/examples on http://localhost:5103/...
尚、ChromeやChromiumにおいて、Webストア以外のローカル上などのNative Clientを動作させるには、
chrome://flags" から、"ネイティブ クライアント"の項目を許可することが必要です。念のため。



0 件のコメント:

コメントを投稿

お気軽にコメントをお寄せください m(_ _)m♪
"コメントの記入者"欄から[名前/URL]を選ぶと、登録なしでコメント投稿していただけます。