計算機序論2 プログラムの実行(2007/09/03分)

計算機序論2(2007) 2007/09/03

コンパイルのサンプル

*.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


スライド関連のソースファイル

week01-kitahara-00.c
week01-kitahara-01.c
week01-kitahara-02a.c
week01-kitahara-02b.c
week01-kitahara-11a.c
week01-kitahara-11b.c
week01-kitahara-12a.c
week01-kitahara-12b.c

kameda[at]iit.tsukuba.ac.jp