クロスコンパイラ(Cross GCC)とは
- いろんなプラットフォームでプログラムを実行させるためのコンパイラ。
- 複数のプラットフォームでシステムを動かすときに利用される。
- JavaのJVMと似ている。
- 組込み系(冷蔵庫のコンピュータ)で実行するシステムにも使われる。
- 複数のOSと、そのOSの複数バージョンに対応させることができる。
- 暇なマシンが別のサーバーのためにコンパイルする技術。
- 新開発中プラットフォームやエミュレータのコンパイラとして。
GCCとは
- GCCは、いろんなコンパイラを集めたフリーウェア。
- クロスコンパイル用に設定する必要があるようだ。
- 不完全版が多い。
- GCCはプラットフォーム毎binutilsを必要とする。
- プラットフォームにはビルドプラットフォーム、ホストプラットフォーム、ターゲットプラットフォームがある。(GNUが呼び分け)
- ビルドプラットフォームは開発環境を表し、ホストプラットフォームは端末デバイスを指す。ターゲットプラットフォームは自分自身(GCC)のコンパイル用である。
- GCCはシェルでbinutilsにコマンド(target...)を渡し、ホストプラットフォームで動かすのに必要なアセンブラを作る。
- コマンドはeclipseでも入力する。
- ホストプラットフォームには標準Cライブラリを搭載させる必要があるが、大きすぎて搭載しきれない場合、newlibという必要最低限な部分だけ搭載する方法がある。
カナディアンクロスとは
- クロスコンパイラを次のプラットフォームで役割分担している。build(ビルドプラットフォーム)、host(ホストプラットフォーム)、(target)ターゲットプラットフォーム。
- 各プラットフォームで連鎖的にコンパイラを作っていく技術。
- カナダに3つの大きな政党があったことが由来。
過去ログ
■実行方法(コンソール)
F5キー実行
コンソール画面はすぐに閉じられる。
※プログラムの最後に getchar(); を入れると、すぐにコンソールが閉じられることはない。
Ctrlキーを押しながらF5キーを押して実行する。
コンソールは何かボタンを押すまで閉じられない
■省略機能using namespace
例)
#include
using namespace std;
int main(){
cout << "Hello world." << endl;
return 0;
}
■コンソール出力
#include
using namespace std;
int main(){
//using namespace stdとしていることでstdが不要になる。
//std.cout << "Hello world." << std.endl;
cout << "Hello world." << endl;
return 0;
}
※printfも普通に使えるので、これを使ったほうが便利かと思われる
■動的配列
int *p; //配列用のポインタ
p = new int[n];
delete[] p;
※・new演算子で確保したメモリは、「delete[] 解放するオブジェクト」で解放します。
■ヘッダーファイルとは
Cで関数を使用する場合、プロトタイプ宣言をする。
※Cは上から順番にコードをコンパイルする。そのため、下段側に存在する関数を、上側にあるコードが使用すると、未知の関数となりコンパイルエラーとなる。そのためプロトタイプ宣言というものが必要である。
プロトタイプ宣言をまとめたのがヘッダーファイルである。
補足情報
「#if !defined(TEST)~#endif 」は一回だけヘッダー情報を読込むようにするための仕組み
ヘッダーファイルにも上から順の法則が働くため、ヘッダーの宣言に順番を意識する必要がある。
参考サイト
http://www.kab-studio.biz/Programing/Codian/Cpp/02.html
実行方法(コンソール)
F5キー実行
コンソール画面はすぐに閉じられる。
※プログラムの最後に getchar(); を入れると、すぐにコンソールが閉じられることはない。
Ctrlキーを押しながらF5キーを押して実行する。
コンソールは何かボタンを押すまで閉じられない
省略機能 using namespace
例)
#include <iostream>
using namespace std;
int main(){
cout << "Hello world." << endl;
return 0;
}
コンソール出力
#include <iostream>
using namespace std;
int main(){
//using namespace stdとしていることでstdが不要になる。
//std.cout << "Hello world." << std.endl;
cout << "Hello world." << endl;
return 0;
}
※printfも普通に使えるので、これを使ったほうが便利かと思われる
動的配列
int *p; //配列用のポインタ
p = new int[n];
delete[] p;
※・new演算子で確保したメモリは、「delete[] 解放するオブジェクト」で解放します。
ヘッダーファイルとは
Cで関数を使用する場合、プロトタイプ宣言をする。
※Cは上から順番にコードをコンパイルする。そのため、下段側に存在する関数を、
上側にあるコードが使用すると、未知の関数となりコンパイルエラーとなる。
そのためプロトタイプ宣言というものが必要である。
プロトタイプ宣言をまとめたのがヘッダーファイルである。
参考サイト
xxx
- ホーム
- プログラミングの覚書
- C++の覚書