*.cはソースファイル、*.EはCプリプロセッサ実行結果、*.Sはアセンブリ言語へのコンパイル結果を示す。
$ gcc -E compiling-sample.c > compiling-sample.E
$ gcc -S compiling-sample.c > compiling-sample.S
compiling-sample.c
compiling-sample.E
compiling-sample.S
スコープ(変数の影響範囲)を示すサンプルプログラムです。
blocking-sample.c
blocking-sample.E
blocking-sample.S
まずはmain関数のみで。
week01-kameda-00.c
gcc -o week01-kameda-00 week01-kameda-00.c
関数を分離。
week01-kameda-01.c
gcc -o week01-kameda-01 week01-kameda-01.c
複数ファイル化。
特にweek01-kameda-02b.c/week01-kameda-02c.cの中の関数は今後も使いまわす可能性大。
week01-kameda-02a.c
week01-kameda-02b.c
week01-kameda-02c.c
gcc -c week01-kameda-02a.c
gcc -c week01-kameda-02b.c
gcc -c week01-kameda-02c.c
gcc -o week01-kameda-02 week01-kameda-02a.o week01-kameda-02b.o week01-kameda-02c.o
関数定義のHeaderファイル化。
week01-kameda-02b.c/week01-kameda-02c.cの中の関数に合わせて、week0_kameda.hを用意。
week01-kameda.h
week01-kameda-03a.c
gcc -c week01-kameda-03a.c
gcc -o week01-kameda-03 week01-kameda-03a.o week01-kameda-02b.o week01-kameda-02c.o
ライブラリ(libkameda.a)を作成する。オブジェクトファイルは続けて幾らでも付けられる。
ar -rc libkameda.a week01-kameda-02a.o week01-kameda-02b.o
ライブラリを用いたコンパイル。
今はライブラリの中のオブジェクトファイルが2つだけだが、
複数になると便利になってくる。
gcc -o week01-kameda-03 week01-kameda-03a.c -L. -lkameda