QEMU | Ubuntuのマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行
先日のエントリ(410と411)でQEMUのユーザランドエミュレーション機能を試していた時、Ubuntuに(Debian
から導入された)マルチアーキテクチャ機能というものがあることを知りました。いつものように、ちょっと
好奇心から、この機能を試してみました。マルチアーキテクチャ機能を使うと、ARM Linux GCCでコンパイル
されたアプリケーションを、x86 Ubuntu Linuxのqemu-armコマンドの引数として指定しなくても、普通に
x86 Ubuntu Linuxのコマンドとして直接実行出来るそうです。
マルチアーキテクチャ機能を使わない場合
$ qemu-arm -L <共有ライブラリパス> <ARM Linuxアプリケーションコマンドライン>
マルチアーキテクチャ機能を使った場合
$ <ARM Linuxアプリケーションコマンドライン>
Linux Arduino互換ライブラリのソースコードをLinaro ARM Linux GCC 4.7でビルドしたARM Linux Arduino
スケッチ(とても簡単なもの)をマルチアーキテクチャ機能を使って実行するには、qemu-staticパッケージの
インストール後に、/lib/ld-linux-armhf.so.3、/lib/arm-linux-gnueabihf/、/usr/lib/arm-linux-gnueabihf/の
3つに対してシンボリックリンクを作成する必要がありました。具体的には、ルネサスRZ/A1Lマイコン搭載の
コンピューテックス社製評価ボードCEV-RZ/A1LのCEV Linux SDK V1.00.00にて、以下のようにシンボリック
リンクを作成しました。(なお、残念ながら、SDK V2.00.00では、以下の方法では実行出来ませんでした。)
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib /lib/arm-linux-gnueabihf
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/usr/lib /usr/lib/arm-linux-gnueabihf

qemu-staticパッケージは、以下のようにインストールしました。(qemu-userパッケージは不要でした。)
sudo apt-get install qemu-user-static


なお、x86 Ubuntu Linuxのマルチアーキテクチャ機能では、以下の種類がサポートされているようです。

追記 : メモ
参考にさせて頂いたブログ
Ubuntu 12.04LTS Beta2でMultiarchを試す
http://blog.kmckk.com/archives/4165115.html
Ubuntu 12.04LTS 正式版でMultiarchを試す
http://blog.kmckk.com/archives/4194926.html
から導入された)マルチアーキテクチャ機能というものがあることを知りました。いつものように、ちょっと
好奇心から、この機能を試してみました。マルチアーキテクチャ機能を使うと、ARM Linux GCCでコンパイル
されたアプリケーションを、x86 Ubuntu Linuxのqemu-armコマンドの引数として指定しなくても、普通に
x86 Ubuntu Linuxのコマンドとして直接実行出来るそうです。
マルチアーキテクチャ機能を使わない場合
$ qemu-arm -L <共有ライブラリパス> <ARM Linuxアプリケーションコマンドライン>
マルチアーキテクチャ機能を使った場合
$ <ARM Linuxアプリケーションコマンドライン>
Linux Arduino互換ライブラリのソースコードをLinaro ARM Linux GCC 4.7でビルドしたARM Linux Arduino
スケッチ(とても簡単なもの)をマルチアーキテクチャ機能を使って実行するには、qemu-staticパッケージの
インストール後に、/lib/ld-linux-armhf.so.3、/lib/arm-linux-gnueabihf/、/usr/lib/arm-linux-gnueabihf/の
3つに対してシンボリックリンクを作成する必要がありました。具体的には、ルネサスRZ/A1Lマイコン搭載の
コンピューテックス社製評価ボードCEV-RZ/A1LのCEV Linux SDK V1.00.00にて、以下のようにシンボリック
リンクを作成しました。(なお、残念ながら、SDK V2.00.00では、以下の方法では実行出来ませんでした。)
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib /lib/arm-linux-gnueabihf
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/usr/lib /usr/lib/arm-linux-gnueabihf

qemu-staticパッケージは、以下のようにインストールしました。(qemu-userパッケージは不要でした。)
sudo apt-get install qemu-user-static


なお、x86 Ubuntu Linuxのマルチアーキテクチャ機能では、以下の種類がサポートされているようです。

追記 : メモ
参考にさせて頂いたブログ
Ubuntu 12.04LTS Beta2でMultiarchを試す
http://blog.kmckk.com/archives/4165115.html
Ubuntu 12.04LTS 正式版でMultiarchを試す
http://blog.kmckk.com/archives/4194926.html
- 関連記事
-
- QEMU | VMware Player上のUbuntuでMinGW32 GCCをapt-getしてインストールしてみた
- QEMU | ARM (Linux非対応) Insight-7.4でARM Linux Arduinoスケッチをデバッグ
- QEMU | UbuntuのARMユーザランド + ARM Linux GDBでARM Linux Arduinoスケッチをデバッグ (2)
- QEMU | UbuntuのARMユーザランド + ARM Linux GDBでARM Linux Arduinoスケッチをデバッグ→△
- QEMU | UbuntuのネイティブなGDBSERVERをインストールして動かしてみた
- QEMU | Ubuntuのchroot機能とマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行
- QEMU | Ubuntuのchroot機能でCEV-RZ/A1L Linuxのルートファイルシステムをエミュレーション
- QEMU | Ubuntuのマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行
- QEMU | CEV Linux SDK V2.00.00 GCC 4.7でビルドしたARM Linux ArduinoスケッチをQEMUで実行
- QEMU | Linaro ARM Linux GCC 4.7でビルドしたARM Linux ArduinoスケッチをQEMUで実行
- Arduino IDE | Linux Arduino互換ライブラリをCEV Linux SDK V2.00.00 GCC 4.7でビルド→正常終了
- Arduino IDE | Linux Arduino互換ライブラリをUbuntu/Linaro x86 Linux GCC 4.7でビルド→正常終了
- Arduino IDE | Linux Arduino互換ライブラリをLinaro ARM Linux GCC 4.7でビルド→正常終了
- Arduino IDE | Linux Arduino互換ライブラリをUbuntu/Linaro x86 Linux GCCでビルド→途中でエラー
- Arduino IDE | Linux Arduino互換ライブラリをCygwin GCCでビルド→最初からエラー
2014/01/27 blog-entry-412 category: Arduino Lib & CrossGCC
| h o m e |