10:51:55)追加された行はこの色です。削除された行はこの色です。[#sa09ce3d]大規模なプログラム開発では、デバッグの容易さやコンパイル時間の短縮のために、~プログラムの要素毎にファイルを作成し、それぞれ分割コンパイルを行い、最後に結合します。~また、頻繁に使用する関数等は共有ライブラリとしてまとめ、~複数のアプリケーションプログラムから呼び出して使用します。~さらに、コンパイルする際に一々コマンドを入力するのは面倒なので、~makeによってコンパイルを自動化します。以下では、大規模なプログラム開発で常識的に行われている以上の3点について解説します。~(例ではコンパイルのためにgccを使っていますが、~gamelibではodeを使用する関係でC++のコンパイラが必要なため、g++を用いてコンパイルしています。[#uc776c7f]一つのアプリケーションプログラムを開発するために複数のファイルでプログラムソースを管理し、~それぞれを別々にコンパイルして、最後に結合します。以下の.cファイルがあるとします。func.c以上のファイルの中にはただ一つmain関数があるものとします。"-c"オプションをつけてコンパイルします。-c"により.oファイルが生成されました。最後に以下のように実行ファイルを生成します。func.oただし、"-o"オプションは実行ファイルの名前を指定しています。[#se80496f]ライブラリを用意する事、はアプリケーションプログラムで頻繁に使用する関数等をあらかじめ開発して、~アプリケーション開発時に何度も同じプログラムを開発する手間を省いたり、~予め十分に構造を設計しておく事でバグの発生を防ぐ狙いがあります。~試しに普段使用しているコンピュータで使われている共有ライブラリを以下のコマンドで見てみましょう。/usr/local/libアプリケーションプログラム開発時には、そのライブラリの思想を十分汲み取る事で、~効率の良いプログラム開発ができ、アプリケーションプログラムのアイディア実現に集中する事ができます。Xの場合、共有ライブラリのファイルは"lib"で始まり.dylibで終わる事になっており~今回はlibfunc.dylibを作成するものとします。~まず、以下の.cファイルがあるとします。func2.c以上のファイルの中にはmain関数があってはいけません。"-c"オプションをつけてコンパイルします。-c"により.oファイルが生成されました。最後に以下のように共有ファイルを作成します。libfunc.dylibただし、"-o"オプションは共有ファイルの名前を指定している。linuxの例linuxの場合、共有ライブラリのファイルは"lib"で始まり.soで終わる事になっており、~今回はlibfunc.soを作成するものとします。~まず、以下の.cファイルがあるとします。func2.c以上のファイルの中にはmain関数があってはいけません。"-c"オプションをつけてコンパイルします。-c"により.oファイルが生成されました。最後に以下のように共有ファイルを作成します。libfunc.soただし、"-o"オプションは共有ファイルの名前を指定しています。[#l5ca86a5]共有ライブラリを使用するためにはコンパイラにオプションを渡す必要があります。リンクするライブラリを指定するオプション。X)のようになっているが、??の部分のみ記述します。-実行する際の注意点(linuxの場合)ライブラリはldconfigで指定された場所か、~環境変数LD_LIBRARY_PATHで指定された場所を探すため、~適切に設定する必要があります。本ライブラリでは"/usr/local/lib"等、通常システム用のディレクトリにインストールされるライブラリが~ユーザ領域にインストールされる設計になっています。Xの場合はDYLD_LIBRARY_PATH)を実行環境に合わせて設定し直す必要があります。そのため以下のような記述をexec.shに自動的に書き込むようにスクリプトを作っていますので、~exec.shを通して完成したプログラムを実行する事ができます。