LoginSignup
15
14

More than 5 years have passed since last update.

DockerでPepperのクロスコンパイル環境構築

Last updated at Posted at 2015-05-04

Pepperで動作するバイナリをビルドしたくなり、最新の2.3のクロスコンパイル環境を作ろうとしたのですが、インストールガイドの説明の順序関係が微妙なのとか、手順が最新版のqibuildに追従できていないっぽいとかで、ちょっとハマりました。

今回はとにかくお手軽に qibuild configure; qibuild make とだけすればモジュールがビルドできちゃうよみたいな環境を作りたかったので、Dockerを利用してあらかじめ実行環境をごっそりイメージ化することにしたのでそのメモ。

まだこの環境でビルドしたものを実機では確認できていないのですが、とりあえずゴールデンウィークの気分転換に。何か見つけたら編集リクエストやプルリクください。

ビルド手順

Cross Toolchainのダウンロードやドキュメントの参照には、Pepper実機(特にこの例の場合は2.3)と紐づけされたAldebaranアカウントが必要です。

ビルドに使うDockerfileは https://github.com/yacchin1205/naoqi-sdk-docker 参照。Cross Toolchainは自分でダウンロードしてきて置いてください方式。

あらかじめDockerがインストールされている環境を用意しておいてください。自分はWindows上でboot2dockerを使用しています。(参考: boot2dockerでIPython Notebook環境構築)

  1. Dockerfileをcloneしてくる

    $ git clone https://github.com/yacchin1205/naoqi-sdk-docker.git
    
  2. https://community.aldebaran.com/ja/resources/software から、LinuxのCross Toolchain(自分が試したのは ctc-linux64-atom-2.3.0.110.zip )をダウンロードし、1.でcloneしたディレクトリ naoqi-sdk-docker にコピーする

  3. ディレクトリ naoqi-sdk-docker に移動して、 docker build する

    $ docker build -t yacchin1205/pepper-buildenv .
    

    ※Cross Toolchainのファイル名が2.の例と異なる場合は、Dockerfileを適宜書き換えてください

これで、 yacchin1205/pepper-buildenv というイメージができ、PepperのCross Toolchainがqibuildから使用できる状態になる。qibuildのWork Treeを/rootに設定してあって、Cross Toolchainが設定してあるので、/root以下にプロジェクトのディレクトリをマウントすれば、そのプロジェクトで qibuild configure とか qibuild make できる。

使用方法

たとえば、 /vagrant/examples/audiovideocapture/ にあるプロジェクトをビルドする場合は以下のようにする。

$ docker run -v /vagrant/examples/audiovideocapture/:/root/examples/ -it yacchin1205/pepper-buildenv
root@(Container ID):~# cd /root/examples
root@(Container ID):~/examples# qibuild configure
Current build worktree: /root
Using toolchain: atom
* (1/1) Configuring audiovideocapture
-- Using qibuild 3.8
-- Binary: avcapture
-- Configuring done
-- Generating done
-- Build files have been written to: /root/examples/build-atom
root@(Container ID):~/examples# qibuild make
Current build worktree: /root
Using toolchain: atom
* (1/1) Building audiovideocapture
Scanning dependencies of target avcapture
[ 50%] Building CXX object CMakeFiles/avcapture.dir/main.cpp.o
[100%] Building CXX object CMakeFiles/avcapture.dir/avcaptureremote.cpp.o
Linking CXX executable sdk/bin/avcapture
[100%] Built target avcapture

こんな感じで、/vagrant/examples/audiovideocapture/build-atom/sdk/bin/avcapture にバイナリがビルドされる。

参考

ハマったところのメモ。

こんな感じで。

環境構築時、手順書をいったん読んで試行錯誤するのは仕方がないことなのですが、一度ハマって解決したらそのことはすっかり忘れたいのですよね。そんな時にDockerfileで組み立てられるようにしておくと便利かなと。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14