*.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
スコープ(変数の影響範囲)を示すサンプルプログラムです。 ブロック(中括弧"{"‥‥"}")を用いると、スコープが1段下がります。
blocking-sample.c
blocking-sample.E
blocking-sample.S
まずはmain関数のみで。
gcc -o complib-kameda-00 complib-kameda-00.c
関数を分離。
gcc -o complib-kameda-01 complib-kameda-01.c
複数ファイル化。
特にcomplib-kameda-02b.c/complib-kameda-02c.cの中の関数は
今後も使いまわす可能性が大であると仮定してください。
complib-kameda-02a.c
complib-kameda-02b.c
complib-kameda-02c.c
gcc -c complib-kameda-02a.c
gcc -c complib-kameda-02b.c
gcc -c complib-kameda-02c.c
gcc -o complib-kameda-02 complib-kameda-02a.o complib-kameda-02b.o complib-kameda-02c.o
関数定義のHeaderファイル化。
complib-kameda-02b.c/complib-kameda-02c.cの中の関数に合わせて、week0_kameda.hを用意。
complib-kameda.h
complib-kameda-03a.c
gcc -c complib-kameda-03a.c
gcc -o complib-kameda-03 complib-kameda-03a.o complib-kameda-02b.o complib-kameda-02c.o
ライブラリ(libkameda.a)を作成する。オブジェクトファイルは続けて幾らでも付けられる。
ar -rc libkameda.a complib-kameda-02a.o complib-kameda-02b.o
ライブラリを用いたコンパイル。
今はライブラリの中のオブジェクトファイルが2つだけだが、
複数になると便利になってくる。
gcc -o complib-kameda-03 complib-kameda-03a.c -L. -lkameda