NAOqi 2.8.5.10でC++の環境構築とNAO v6上で実行バイナリ動かすまで
都度解釈が間違ってると思うので個人用の備忘録です
開発環境
- Ubuntu 16.04 Xenial Xerus - 64bits only
- NAO v6 2.8.5.10
- naoqi-sdk-2.8.5.10-linux64
- ctc-linux64-atom-2.8.5.10
環境設定
下記ドキュメントを見ながら行う。
プロジェクト作成したり実行したりは下記。
問題
実行バイナリをUbuntu上で動かすと問題無いがNAO v6上に持ってって実行しようとするとNo such file or directoryとなる。
仮説
NAO(atom)用にcross compileできてない。
そもそもドキュメントにnaoqi-sdk-○○-○の説明はあるが
ctc-○○-atom-○○をどう使うかが理解出来なかったのでいろいろ試した。
解決方法
ダウンロードしたファイルの使いかた
- naoqi-sdk-2.8.5.10-linux64 -> Host環境で動かせる実行バイナリを作るためのモジュール郡
- ctc-linux64-atom-2.8.5.10 -> NAOの中で動かせる実行バイナリを作るためのモジュール郡
以下のコマンドはLinux上で動かす実行バイナリをmakeするための設定みたいなもの
$ qitoolchain create mytoolchain ~/.qilib/naoqi-sdk-2.8.5.10/toolchain.xml $ qibuild add-config myconfig -t mytoolchain --default
この場合$ qibuild configure -> $ qibuild makeした実行バイナリはこうなる
[hf@hf-nuc:~/Documents/NaoCpp/helloworld/build-myconfig/sdk/bin]% file ./HelloWorldService ./HelloWorldService: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=11b466622d0e1f5a527f0801aa58ad94603e624e, not stripped
このバイナリをNAOに持ってって実行しようとしてもNo such file or directoryとなる。
NAO向けの実行バイナリをmakeさせるにはctcのほうのtoolchain.xmlを設定してあげる必要がある。
$ qitoolchain create naov6toolchain ~/.qilib/ctc-linux64-atom-2.8.5.10/toolchain.xml $ qibuild add-config myconfig -t naov6toolchain --default
$ qibuild configure -> $ qibuild makeした実行バイナリはこうなる
(プロジェクトにbuild-myconfigが残ってるとConfigureFailedとなったのでディレクトリごと削除した)
[hf@hf-nuc:~/Documents/NaoCpp/helloworld/build-myconfig/sdk/bin]% file ./HelloWorldService ./HelloWorldService: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=aad0d883dc6bd6530764d384e976076f406ceb14, not stripped
これをNAOに持ってって実行するとうまく行く。
ようやくNAOqiのC++環境が理解できた気がする。