Arduino IDE | Pleiades KeplerでLinux Arduinoスケッチのinoファイルをコンパイル
1つ前のエントリで、Linux ArduinoスケッチのinoファイルでもEclipse上でデバッグ出来たことを書きました
が、そうなると、どうしても、Linux ArduinoスケッチのinoファイルをEclipse上でそのままコンパイルしたく
なります。そこで、GCCのオプションを確認してみたところ、以下のオプションがあることに気付きました。
Eclipse上で試してみた結果、一応、inoファイルをそのままコンパイル出来ました。ただ、ヘッダファイルを
1つ追加して手作業でプロトタイプ宣言をメンテナンスしていくという余分な手間が増えてしまいましたので、
ありがたみとしては微妙ですが。(もっとも、手作業でプロトタイプ宣言をメンテナンスすることは、C/C++
では、普通にやっていることですので、それほど微妙という訳ではないだろうとも思ってはいますが。) なお、
今回、Eclipseの編集ウィドウの文法チェック機能は、無効にせずに有効にしたまま、です。
>i586-poky-linux-uclibc-g++ -v --help
GCC_Options.txt


ビルドログは以下の通りでした。
BuildLog.txt
追加したヘッダファイルは以下の通りです。
ファイル: stdafx.h
内容:
#ifndef __STDAFX_H__
#define __STDAFX_H__
#include "Arduino.h"
void setup();
void loop();
void undecl(char *str);
#endif /* __STDAFX_H__ */
プロジェクトの作成は、以下のようにしました。

sketch_dec28a



E:/tools/micom/Intel/sketchbook/sketch_dec28a


E:/tools/micom/Intel/sketchbook/build




ワークスペースの設定は、以下のようにしました。

*.ino


linux_arduino_home E:/tools/micom/Intel/arduino-1.5.3

x86_linux_uclibc_toolchain_home ${linux_arduino_home}/hardware/tools/x86


プロジェクトのプロパティは、以下のようにしました。


ARDUINO=153

"${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc/usr/include"
"${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc/usr/include/c++"
"${linux_arduino_home}/hardware/arduino/x86/cores/arduino"
"${linux_arduino_home}/hardware/arduino/x86/variants/galileo_fab_d"
"${workspace_loc:/${ProjName}/sketch_dec28a}/stdafx.h"




-c -xc++ -m32 -march=i586 --sysroot="${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc" -fno-exceptions -ffunction-sections -fdata-sections

m
pthread

-m32 -march=i586 --sysroot="${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc" -Os
--gc-sections
--allow-multiple-definition
"${workspace_loc:/${ProjName}/build}/core.a"

${workspace_loc:/${ProjName}/build}/${ProjName}.cpp
elf

なお、ちょっと手抜きをして、Linux Arduino互換ライブラリ本体とも言えるcore.aを自前ではビルドせずに、
Intel Galileo Arduino IDEでビルドした時のcore.aをそのまま使用しています。

が、そうなると、どうしても、Linux ArduinoスケッチのinoファイルをEclipse上でそのままコンパイルしたく
なります。そこで、GCCのオプションを確認してみたところ、以下のオプションがあることに気付きました。
Eclipse上で試してみた結果、一応、inoファイルをそのままコンパイル出来ました。ただ、ヘッダファイルを
1つ追加して手作業でプロトタイプ宣言をメンテナンスしていくという余分な手間が増えてしまいましたので、
ありがたみとしては微妙ですが。(もっとも、手作業でプロトタイプ宣言をメンテナンスすることは、C/C++
では、普通にやっていることですので、それほど微妙という訳ではないだろうとも思ってはいますが。) なお、
今回、Eclipseの編集ウィドウの文法チェック機能は、無効にせずに有効にしたまま、です。
>i586-poky-linux-uclibc-g++ -v --help
GCC_Options.txt
-x <language> | Specify the language of the following input files |
Permissible languages include: c c++ assembler none | |
'none' means revert to the default behavior of | |
guessing the language based on the file's extension | |
-include <file> | Include the contents of <file> before other files |
--allow-multiple-definition | Allow multiple definitions |


ビルドログは以下の通りでした。
BuildLog.txt
追加したヘッダファイルは以下の通りです。
ファイル: stdafx.h
内容:
#ifndef __STDAFX_H__
#define __STDAFX_H__
#include "Arduino.h"
void setup();
void loop();
void undecl(char *str);
#endif /* __STDAFX_H__ */
プロジェクトの作成は、以下のようにしました。

sketch_dec28a

Cross compiler prefix: | i586-poky-linux-uclibc- |
Cross compiler path: | E:/tools/micom/Intel/arduino-1.5.3/hardware/tools/x86/i686-pokysdk-mingw32/usr/bin/i586-poky-linux-uclibc |


E:/tools/micom/Intel/sketchbook/sketch_dec28a


E:/tools/micom/Intel/sketchbook/build




ワークスペースの設定は、以下のようにしました。

*.ino


linux_arduino_home E:/tools/micom/Intel/arduino-1.5.3

x86_linux_uclibc_toolchain_home ${linux_arduino_home}/hardware/tools/x86


プロジェクトのプロパティは、以下のようにしました。


ARDUINO=153

"${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc/usr/include"
"${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc/usr/include/c++"
"${linux_arduino_home}/hardware/arduino/x86/cores/arduino"
"${linux_arduino_home}/hardware/arduino/x86/variants/galileo_fab_d"
"${workspace_loc:/${ProjName}/sketch_dec28a}/stdafx.h"




-c -xc++ -m32 -march=i586 --sysroot="${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc" -fno-exceptions -ffunction-sections -fdata-sections

m
pthread

-m32 -march=i586 --sysroot="${x86_linux_uclibc_toolchain_home}/i586-poky-linux-uclibc" -Os
--gc-sections
--allow-multiple-definition
"${workspace_loc:/${ProjName}/build}/core.a"

${workspace_loc:/${ProjName}/build}/${ProjName}.cpp
elf

なお、ちょっと手抜きをして、Linux Arduino互換ライブラリ本体とも言えるcore.aを自前ではビルドせずに、
Intel Galileo Arduino IDEでビルドした時のcore.aをそのまま使用しています。

- 関連記事
-
- Arduino IDE | Linux Arduino互換ライブラリをUbuntu/Linaro x86 Linux GCCでビルド→途中でエラー
- Arduino IDE | Linux Arduino互換ライブラリをCygwin GCCでビルド→最初からエラー
- Arduino IDE | Intel Galileo Arduino IDEのマイコンボードメニューを冗談半分(?)に増やしてみた
- Arduino IDE | Intel Galileo Arduino IDEで作成した実行プログラムをLinuxから実行する時の引数
- Arduino IDE | Intel Galileo Arduino IDEでcppファイルをコンパイル
- 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のスレッド制御関数を書いてビルドしてみた
2014/01/04 blog-entry-399 category: Arduino Lib & CrossGCC
| h o m e |