タイトル大津真=XはUNIXでサーバで》Mac OS X用パッケージの作り方(2)カテゴリー開発情報, 大津真=XはUNIXでサーバで
作成日2001/9/25 17:36:29作成者新居雅行
――――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
(以下略)


(続く)
[大津真]
関連リンクhttp://www.o2-m.com/