Arduino IDE | Intel Galileo Arduino IDEのGCCでビルドしたプログラムをUbuntuで実行してみた
3つ前のエントリで、Windows上のIntel Galileo Arduino IDEでビルドしたプログラムを、VMware Player
上のUbuntuにコピーし、実行しようして失敗したのですが、ちょっと意地になって、今回、Intel Galileo
Arduino IDEで使用されているi586-poky-linux-uclibc GCCをコマンドプロンプトから操作して、もっと
簡単なサンプルプログラムで試してみました。残念ながら、共有ライブラリで不足しているものがあった
ので、対症療法的に無理矢理補うようなことをしてしまいましたが、一応、実行させることは出来ました。


試したサンプルプログラムは、以下の通りです。(もともとは、Interface誌2013年11月号のCEV-RZ/A1Lの
「ステップ2…開発環境の構築」という記事のサンプルプログラムです。)
ファイル: sample.c
/*
* sample.c
*
*/
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Hello app!!\n");
return 0;
}
今回、Windowsのコマンドプロンプトで、以下のようにビルドしました。
cd /d E:/tools/micom/Intel/tmp
dir /b
E:/tools/micom/Intel/arduino-1.5.3/hardware/tools/x86/i686-pokysdk-mingw32/usr/bin/i586-poky-linux-uclibc/i586-poky-linux-uclibc-gcc --sysroot=E:/tools/micom/Intel/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc -O0 -ggdb -o sample sample.c
dir /b
そして、ビルドしたプログラムを、VMware Player上のUbuntuで、以下のように共用ライブラリを補って
実行させました。
ls ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/ld-uClibc.so.0 /lib/ld-uClibc.so.0
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/libc.so.0 /lib/libc.so.0
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/libgcc_s.so.1 /lib/libgcc_s.so.1
ls
./sample
なお、VMware Playerの共有フォルダ機能を使い、以下のようにWindowsとVMware Player上のUbuntuの
両方からIntel Galileo Arduino IDEをインストールしたフォルダにアクセス出来るようにしました。


また、GDBを試したところ、ワーニングが表示されてしまったものの、一応、デバッグ出来そうでした。

追記 : メモ
今回、VMware Playerの共有フォルダ機能を使ったのですが、Windows版のIntel Galileo Arduino IDEの
GCCではなく、Linux版のIntel Galileo Arduino IDEのGCCであれば、共有フォルダ機能を使わなくても、
Ubuntu上でサンプルプログラムをi586-poky-linux-uclibc GCCでビルドして、そのまま実行出来ると思い
ます。(共有ライブラリを補う必要がある点は同じだと思いますが。)
上のUbuntuにコピーし、実行しようして失敗したのですが、ちょっと意地になって、今回、Intel Galileo
Arduino IDEで使用されているi586-poky-linux-uclibc GCCをコマンドプロンプトから操作して、もっと
簡単なサンプルプログラムで試してみました。残念ながら、共有ライブラリで不足しているものがあった
ので、対症療法的に無理矢理補うようなことをしてしまいましたが、一応、実行させることは出来ました。


試したサンプルプログラムは、以下の通りです。(もともとは、Interface誌2013年11月号のCEV-RZ/A1Lの
「ステップ2…開発環境の構築」という記事のサンプルプログラムです。)
ファイル: sample.c
/*
* sample.c
*
*/
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Hello app!!\n");
return 0;
}
今回、Windowsのコマンドプロンプトで、以下のようにビルドしました。
cd /d E:/tools/micom/Intel/tmp
dir /b
E:/tools/micom/Intel/arduino-1.5.3/hardware/tools/x86/i686-pokysdk-mingw32/usr/bin/i586-poky-linux-uclibc/i586-poky-linux-uclibc-gcc --sysroot=E:/tools/micom/Intel/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc -O0 -ggdb -o sample sample.c
dir /b
そして、ビルドしたプログラムを、VMware Player上のUbuntuで、以下のように共用ライブラリを補って
実行させました。
ls ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/ld-uClibc.so.0 /lib/ld-uClibc.so.0
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/libc.so.0 /lib/libc.so.0
sudo ln -s ~/Galileo/arduino-1.5.3/hardware/tools/x86/i586-poky-linux-uclibc/lib/libgcc_s.so.1 /lib/libgcc_s.so.1
ls
./sample
なお、VMware Playerの共有フォルダ機能を使い、以下のようにWindowsとVMware Player上のUbuntuの
両方からIntel Galileo Arduino IDEをインストールしたフォルダにアクセス出来るようにしました。


また、GDBを試したところ、ワーニングが表示されてしまったものの、一応、デバッグ出来そうでした。

追記 : メモ
今回、VMware Playerの共有フォルダ機能を使ったのですが、Windows版のIntel Galileo Arduino IDEの
GCCではなく、Linux版のIntel Galileo Arduino IDEのGCCであれば、共有フォルダ機能を使わなくても、
Ubuntu上でサンプルプログラムをi586-poky-linux-uclibc GCCでビルドして、そのまま実行出来ると思い
ます。(共有ライブラリを補う必要がある点は同じだと思いますが。)
- 関連記事
-
- Arduino IDE | Pleiades KeplerとIntel Galileo Arduino IDEでスケッチフォルダとビルドフォルダを共有
- Arduino IDE | Pleiades KeplerでLinux Arduino互換ライブラリをcppファイルから使用する
- Arduino IDE | Pleiades KeplerでLinux Arduinoスケッチのinoファイルをコンパイル
- Arduino IDE | Pleiades Kepler + VMware Player上のUbuntuでLinux Arduinoスケッチをデバッグ (2)
- Arduino IDE | Pleiades Kepler + VMware Player上のUbuntuでLinux Arduinoスケッチをデバッグ (1)
- Arduino IDE | Intel Galileo Arduino IDEのビルドフォルダを変更する
- Arduino IDE | Intel Galileo Arduino IDEで呼び出すGCCやオプションを変えてビルドする
- Arduino IDE | Intel Galileo Arduino IDEのGCCでビルドしたプログラムをUbuntuで実行してみた
- Arduino IDE | Intel Galileo Arduino IDEにGCCを呼び出す時のオプションを表示させる
- Arduino IDE | Intel Galileo ArduinoスケッチにLinuxのスレッド制御関数を書いてビルドしてみた
- Arduino IDE | Intel Galileo x86 Linux Arduino互換ライブラリに使用されているGCC
- Visual Studio | デバッガ機能の拡張方法について書かれたMSDNのページ
- RXマイコン | アプリケーションノート + 付加価値 をライブラリファイルで配布可?
- Renesas Eclipse | the FIT plug-in in e2studio v2.2
- Renesas Eclipse | AppliletがKPIT GNU RL78/RX C Compilerをサポートしたらしい
2013/12/26 blog-entry-394 category: Arduino Lib & CrossGCC
| h o m e |