――――bzip2のコンパイルまで 次にbzip2のソースをコンパイルする手順について説明します。あらかじめ以下のオフィシャルほーむページから最新版bzip2のtarボール「bzip2-1.0.1.tar.gz」をダウンロードしておきます。
◇The bzip2 and libbzip2 official home page http://sources.redhat.com/bzip2/
これを適当なディレクトリにコピーした後にTerminal上でtarコマンドを実行して展開します。
% tar xvzf bzip2-1.0.1.tar.gz <return> bzip2-1.0.1/blocksort.c bzip2-1.0.1/huffman.c bzip2-1.0.1/crctable.c bzip2-1.0.1/randtable.c bzip2-1.0.1/compress.c (以下略)
展開されたbzip2-1.0.1ディレクトにcdコマンドで移動しlsコマンドで中身を見てみましょう。
% cd bzip2-1.0.1<return> % ls<return> CHANGES bzip2recover.c makefile.msc sample2.ref LICENSE bzlib.c manual.ps sample3.bz2 Makefile bzlib.h manual.texi sample3.ref Makefile-libbz2_so bzlib_private.h manual_1.html spewG.c README compress.c manual_2.html unzcrash.c README.COMPILATION.PROBLEMS crctable.c manual_3.html words0 Y2K_INFO decompress.c manual_4.html words1 blocksort.c dlltest.c manual_toc.html words2 bzip2.1 dlltest.dsp randtable.c words3 bzip2.1.preformatted huffman.c sample1.bz2 bzip2.c libbz2.def sample1.ref bzip2.txt libbz2.dsp sample2.bz2
あれれれ、魔法のconfigureスクリプトがありませんね。でも、コンパイルの手順を記述したMakefileは用意されています。実はbzip2のようにシステムのライブラリにそれほど依存しない小さなプログラムはMakefileだけで対処している場合も多いのです。ためしにコンパイルしてみましょう。
% make<return>
If compilation produces errors, or a large number of warnings, please read README.COMPILATION.PROBLEMS -- you might be able to adjust the flags in this Makefile to improve matters.
gcc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c blocksort.c make: gcc: Command not found make: *** [blocksort.o] Error 127
うーむ、エラーで止まりましたか。下から2行目に「 gcc: Command not found」というメッセージが表示されています。gccというのはGNUプロジェクトのコンパイラです。
◇GNUプロジェクト http://www.gnu.org/
Mac OS Xのコンパイラは、gccを改良したものなのですが、名前がなぜかccになっています。そのためコンパイラであるgccが見つからないというエラーが表示されたわけです。 対処方法は2つあります。
〈方法1〉gccをccのシンボリックリンクする。 シンボリックリンクとはMacのエイリアスのようなものだと思ってください。シンボリックリンクの作成にはlnコマンドを「-s」オプションを付けて実行します。コンパイラccは/usr/binディレクトリにありますが、このディレクトリにはroot権限が必要なため次のようにsudoコマンドを使用してlnコマンドを実行します。
% sudo ln -s /usr/bin/cc /usr/bin/gcc <return> Password: ←パスワードを入力
〈方法2〉Makefileを書き換える picoエディタなどでMakefileを見てみると3行目に次のような記述があります。
CC=gcc
これを次のように書き換えます。
CC=cc
このCCというのはMakefile内でコンパイラを指定するマクロ変数です。
どちらの方法でもかまいませんが、システムディレクトリをいじりたくない方は2番目のMakefileを書き換える方法を使用するといいかもしれません。
もう一度コンパイルしてみましょう。今度はエラーなく終了するはずです。
% make <return>
If compilation produces errors, or a large number of warnings, please read README.COMPILATION.PROBLEMS -- you might be able to adjust the flags in this Makefile to improve matters.
cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c blocksort.c cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c huffman.c cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c crctable.c cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c randtable.c (以下略)
(続く) [大津真] |