Section Next |Prev


2.2 cc/gcc (Cコンパイラ)

【機能説明】
Cプログラムのコンパイル、リンクを行います。 出力名を指定しない場合は、 a.out という実行ファイルが作成されます。

【入力フォーマット】
gcc [オプション] ファイル名...

【主なオプション】
cc は解析できないオプションは無視し、そのまま次段のコマンド(例えば ld) へ引き渡します。したがって cc コマンドのオプションとして指定しているように 見えるオプションでも、実際には ld に対して効果があることが考えられます。
マニュアルを参照するときは cc 以外に ld(1), as(1) なども合わせて参照する ことをお勧めします。

-c
C のコンパイルだけを行い入力ファイルの .c を .o に変えたファイルを出力します。
-g
デバッグを行なう為の情報をオブジェクトファイルに追加して出力しす。
-Idirectory
インクルードファイルの存在するディレクトリを指定します。
-Ldirectory
ライブラリ検索を行うディレクトリを指定します。
-ofile-name
出力ファイル名を指定します。特に指定しない場合は a.out になります。
-O
コンパイルの際に最適化を行います。

【実行例】
よく用いられるオプションを交えたコンパイルの実行結果を以下に示します。

最も簡単な例
簡単なプログラム(sample.c) のコンパイルと実行
	$ cat sample.c
	main()
	{
		puts("Linux!");
	}
	$ cc sample.c 
	$ ./a.out
	Linux!
複数のソースからなるプログラムのコンパイル
2つ以上のソースファイルから1つの実行イメージファイルを作成するには、 以下のようにソースファイルをまとめてコンパイル/リンクすることができます。
	$ cc test1.c prog1.c prog2.c
実行ファイルの指定
出力ファイル名を指定する時には -o オプションを用います。
	$ cc -o sample sample.c
	$ ./sample
	Linux!
オブジェクトファイルの作成
リンクを行なわずにコンパイルだけ行なう時には -c オプションを用います。
	$ ls
	test.c
	$ cc -c test.c
	$ ls
	test.c	test.o
複数オプションの指定
ライブラリやオブジェクトのリンクとコンパイルを一度に行うこともできます。
	$ cc -o sample sample.c libtest.a prog1.o
最適化
最適化やデバッグ情報の有無によって実行ファイルの大きさは変化します。
	$ cc -O0 -o sample_0 sample.c	# 最適化なし
	$ cc -O1 -o sample_1 sample.c	# 最適化あり
	$ cc -g  -o sample_g sample.c	# デバッグ用
	$ ls -l sample_*
	-rwxrwxr-x  1 ycos ycos 4742 11月  4 14:49 sample_0
	-rwxrwxr-x  1 ycos ycos 4718 11月  4 14:48 sample_1
	-rwxrwxr-x  1 ycos ycos 5758 11月  4 14:48 sample_g


Section Next |Prev

Copyright ycosSystems 2007, prgBasic/Body22.html