ソースを表示
出典: Knatech
Articles/GCC Simple Usage
のソース
移動:
メニュー
,
検索
以下に示された理由により、ページの編集を行うことができません:
この操作は、
登録利用者
のグループに属する利用者のみが実行できます。
このページのソースを閲覧し、コピーすることができます:
{{DISPLAYTITLE:GCC の簡単な使用方法}} ここでは、GCC の簡単な使用方法について説明します。 == GNU コンパイラ (GCC) について == GCC (GNU Compiler Collection) は、C 言語および C++ 言語のコンパイラです。多くの Linux PC には標準でインストールされています。 Windows 版は [[../Cygwin Installation|Cygwin]] または [[../MinGW Installation|MinGW]] に含まれており、フリーソフトウェアとして入手できます。 gcc とともによく利用されるツールは以下のとおりです。 * g++ - C++ 言語コンパイラ、リンカ * make - 自動ビルドツール * gdb - デバッガ * ar - アーカイバ (ライブラリ生成) * as - アセンブラ Windows では、DLL 作成のために dlltool、dllwrap などが使われることもあります。 == 簡単なコンパイル例 == ここでは、おなじみ Hello, World! プログラムをコンパイルする方法を説明します。まず以下のプログラムを作成してください。Windows ではメモ帳などのテキストエディタを使ってください (Word や ワードパッドはだめです)。 '''hello.c:''' <pre> #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, World!\n"); return 0; } </pre> 次にコンパイルを行います。Linux では任意のターミナルを開いてください。Windows (MinGW) では、コマンドプロンプトまたは rxvt (M のアイコン) を開きます。 以下のコマンドを実行してください。「$」記号はプロンプトを表します (この記号は入力しないでください)。 <pre> $ cd (hello.c があるディレクトリ) $ gcc hello.c -o hello </pre> コマンドの意味は、hello.c をコンパイルして、「-o」で指定される hello という名前の実行ファイルを生成しなさい、です。Windows では拡張子「exe」が付加されます。 コンパイルの後、実行ファイルを以下のようにして実行させます。 <pre> $ hello Hello, World! </pre> 環境によっては、以下のような入力になります。 <pre> $ ./hello Hello, World! </pre> == 分割コンパイル == 比較的大きなプログラムを作る場合は、分割コンパイルの概念を知っておく必要があります。分割コンパイルは、複数のソースファイルがあるとき、それぞれを個別にコンパイルし、最終的にこれらをリンクして、1 つの実行ファイルを生成します。 [[Image:Articles_gcc_usage_partition.png]] 図に示した一連のコンパイル作業は、以下のように行います。 <pre> $ gcc -c morning.c $ gcc -c afternoon.c $ gcc -c evening.c $ gcc morning.o afternoon.o evening.o -o allday </pre> 上の 3 行は、ソースファイルをコンパイルしてオブジェクトファイルを生成します。「-c」を指定していることに注意してください。最後の行は、3 つのオブジェクトファイルをリンクして、allday という実行ファイルを生成します。 == Makefile の利用 == 分割コンパイルは、コマンドをたくさん打ち込む必要があるので、負担がかかるかもしれません。しかし、これを自動化すると、負担が減って幸せになるでしょう。 バッチファイルやシェルスクリプトを利用すれば、あらがじめ記録した複数のコマンド行を、自動的に実行できます。しかし多くの開発者はその選択肢を選びません。例えば、ソースファイルが 50 個あったときに、たった 1 つのファイルの、しかも 1 行だけ修正しただけで、毎回すべてのファイルをコンパイルするのは常識的ではありません。 Makefile は、修正を加えたソースファイルしかコンパイルしません。しかしリンクはしっかり行います。すなわち必要十分条件を兼ね備えているのです。 '''Makefile:''' <pre> 1: TARGET = allday 2: CFLAGS = -g 3: OBJS = morning.o afternoon.o evening.o 4: 5: all : $(TARGET) 6: 7: $(TARGET) : $(OBJS) 8: gcc $(OBJS) -o $@ 9: 10: .c.o : 11: gcc $(CFLAGS) -c $< </pre> 行番号は便宜上付けています。実際には打ち込まないでください。 1 ~ 3 行目は、マクロ変数の設定を行っています。例えば、TARGET の右辺の値 allday が、後の $(TARGET) と置き換わります。以下は変数の簡単な説明です。 * TARGET: 生成する実行可能ファイル名 (*.exe) * CFLAGS: コンパイルオプション (-g はデバッグビルドを表す) * OBJS: オブジェクトファイル群 (*.o) 5 行目からは、リンキングとコンパイルの処理を再帰的に記述しています。 5 行目: * 実行ファイル $(TARGET) が最新のものかどうかを調べる。 * 最新であれば終了。そうでなければ 7 行目を実行。 7 行目: * オブジェクトファイル群 $(OBJS) が最新のものかどうかを調べる。 * 最新であれば、オブジェクトファイル群をリンクする。そうでなければ 10 行目を実行。 10 行目: * ソースファイル (.c) をコンパイルしてオブジェクトファイル (.o) にする。 なお、メイクファイル中の、「$@」は $(TARGET) と置き換わり、「$<」は現在処理中のソースファイルと置き換わります。 メイクファイルは Makefile という名前 (拡張子なし、M だけ大文字) で作成します。「gcc」の前には、必ずタブ文字を入れてください (コピーする場合は注意)。2 箇所あります。 なお、GNU Make の場合、8 行目以降は省略しても正常に動作します。 Makefile を処理させるために、make という自動ビルドツールを使用します。引数は今回必要ありません。実行するディレクトリに「Makefile」という名前のファイルがあれば、それがツールによって解釈されます。 <pre> $ make gcc -c morning.c gcc -c afternoon.c gcc -c evening.c gcc morning.o afternoon.o evening.o -o allday </pre> == 参考ページ == * [http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html GNU make 日本語訳(Coop編) - 目次] == コメント == <comments /> [[{{ns:Talk}}:{{PAGENAME}}|コメントの一覧]]
Articles/GCC Simple Usage
に戻る。
表示
本文
ノート
ソースを表示
履歴
個人用ツール
38.107.191.83
このIP利用者の会話
ログイン
案内
K-na TechNotes
Articles
Contact
Twitter
メール
利用者:Knatech
検索
ツールボックス
リンク元
関連ページの更新状況
特別ページ