Makefile
は構築の段階で鍵となるファイルです。Makefile の最も
単純な使い方は、「バイナリ」つまりパッケージの実行部分のコンパイルや
構築を行うスクリプトとしてのものです。
Makefile を使えば、ソフトウェアパッケージの更新をする際に全部のファイル
をいちいち再コンパイルしないで済ませることもできるのですが、この使い方
はここでは関係ないのでまた別の話になります。
いくつかのタイミングで Makefile は cc
や gcc
を実行
します。正確には、プリプロセッサ、C (や C++) のコンパイラ、リンカを順に
実行します。
普通、make
を実行するには make とタイプするだけです。
make
を実行すると、普通はパッケージに必要な全ての実行可能ファ
イルが構築されます。しかし、make にできることはこれだけではありません。
例えば、ファイルを適切なディレクトリにインストールしたり(make install)、
古いオブジェクトファイルを消去できます(make clean)。make -n
を実行すると、make が呼び出す全ての命令を実際の処理を行わずに表示だけ
させることにより、構築のプロセスをあらかじめ確認できます。
一般的な Makefile を使うのは非常に単純なソフトだけです。もっと複雑な
インストール作業では、あなたのマシンのライブラリやインクルードファイル、
リソースに合わせて Makefile の設定を必要があります。このことは
インストールに X11
のライブラリが必要なときによく起こります。
X11
では Imake と xmkmf がこの作業をしてく
れます。
man ページからの引用によると、Imakefile
は Makefile の
「テンプレート」です。 imake ユーティリティは Imakefile を元にして
システムに合った Makefile を作ります。しかし、ほとんどの場合は、imake
を直接使うのではなく xmkmf を実行することになるでしょう。
xmkmf
は imake を実行するためのシェルスクリプトであり、
フロントエンドです。個別のインストールの際の具体的な作業については、ソ
フトウェアアーカイブに入っている README や INSTALL という名前の
ファイルをチェックしてください。(ソースファイルを展開した後に、メイン
のディレクトリに Imakefile
ができていれば、xmkmf を
使うはずだという動かぬ証拠になります。) imake
と
xmkmf
の細かい動作については man ページを読んでください。
xmkmf
や make
は root で実行することが必要な場合があ
ることに注意してください。特に、make install
を実行して
/usr/bin
や /usr/local/bin
ディレクトリにバイナリ
ファイルを移動させる場合はそうです。root 権限を持たない普通のユーザに
はシステムディレクトリへの書き込み権限がないので、make を使用するとお
そらく書き込み拒否のエラー(write access denied)が出るでしょう。
また、バイナリファイルの実行許可が適切なユーザに与えられているかどうか
も確認してください。
xmkmf は Imakefile
を使って、システムに合った
Makefile を新しく作ります。通常は -a オプションを付
けて xmkmf を実行し、
make Makefiles, make includes, make depend を自動的に行わせます。
これにより変数の設定や、コンパイラやリンカに与えるライブラリの位置の
定義が行われます。場合によっては、Imakefile
がなく、
その代わりに同様の設定を行うための INSTALL
スクリプトや
configure
スクリプトが付いていることもあります。この際の注意
ですが、configure
を実行する場合には、確実にカレントディレクトリ
の configure
スクリプトを実行するために ./configure
として実行すべきです。大抵の場合、インストールの手順を説明した
README
ファイルがパッケージに入っています。
xmkmf
や何らかのインストールスクリプトが作成した
Makefile
を実際に見て詳しく点検するとよいでしょう。
Makefile は通常、あなたのシステムに合わせて正しく設定されているはずで
すが、時として手作業で Makefile を「いじったり」、間違いを直す必要に迫
られることがあります。
できたてのバイナリを適切なシステムディレクトリにインストールするには、
普通は root になって make install します。最近のディストリビューション
では、システム全体で使うバイナリを置くための一般的なディレクトリは
/usr/bin
, /usr/X11R6/bin
, /usr/local/bin
で
す。新しいパッケージを入れるのに適切なディレクトリは /usr/local/bin
で、そうしておけば新しく入れた部分と元々 Linux にインストールされてい
た部分を分けておけます。
もともと商用 UNIX 用を対象にしていたパッケージは、/opt
等の見
慣れないディレクトリにインストールしようとするかもしれません。もちろん、
インストール先のディレクトリが存在していなければ、エラーになります。
これを回避する最も簡単な方法は、root になって /opt
ディレクトリ
を作って、そこにパッケージをインストールし、PATH
環境変数に
そのディレクトリを追加することです。別のやり方としては、
/usr/local/bin
にシンボリックリンクを張ってもかまいません。
したがって、一般的なインストールの手順は以下のようになります:
README
ファイルや他の適当なドキュメントを読みます。INSTALL
や configure
といったスクリプトを実行します。Makefile
をチェックします。
注意:
Makefile
に手を入れて、gcc
に渡す最適化オプションを
追加するといいでしょう。こういったオプションでよく使われるのは、
-O2, -fomit-frame-pointer, -funroll-loops,
-mpentium(Pentium を使っている場合)です。Makefile
をいじる時は、用心と常識を忘れないように!
/coll
ディレクトリや /pack
ディレクトリに
インストールされます。これらのディストリビューションのどれかをちょっと
試してみるにも、パックコレクション(Pack-Collection)を上記の
サイトから入手する必要があるでしょう。