タイトル | 大津真=XはUNIXでサーバで》UNIX用ソフトウエアのインストール法(2) | カテゴリー | インターネット全般, UNIX, 大津真=XはUNIXでサーバで |
作成日 | 2001/8/24 18:1:3 | 作成者 | 新居雅行 |
――――configureスクリプトでMakefileの作成 さて、多くのソースファイルに分かれたプログラムをコンパイルしたりインストールするには通常Makefileと呼ばれるファイルが使われます。Makefileには、必要なライブラリの場所や依存関係、コンパイル手順、インストール先などさまざまな情報が記述されています。ただし、同じUNIX系OSといっても、コンパイラの相違やライブラリやヘッダのあるなしなど環境はさまざまであり、ひとつのMakefileですべてに対応するのは不可能です。そこで最近のオープンソースソフトウエアでよく利用されるのがconfigureスクリプトです。configureスクリプトをコンパイルを行うシステム上で実行すると、システムを検索してコンパイラやリンカなどを探し出しその環境にあったMakefileを自動作成してくれます。したがって、ソースを展開してみてconfigureスクリプトが含まれていたら、簡単にインストールできる可能性があると考えてもいいでしょう。もちろんNcFTPにもconfigureスクリプトが用意されています。ただし、configureスクリプトも万能ではありません。ほとんどのソフトはMac OS Xなどという新参者のOSを意識して作られていはいないということもあって、configureスクリプトがエラーとなる確率も低くありません。その理由としては、必要なライブラリがないなどという致命的な場合もありますが、簡単な修正やオプションの設定で対応できることもあります。 用意されているconfigureスクリプトにどのようなオプションがあるかは「--help」を付けて実行してみればわかります。「cd ncftp-3.0.3 <return>」などとして、展開したディレクトリのルートをカレントディレクトリにしておきます。 % ./configure --help <return> Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print ‘checking...’ messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] 〈以下略〉 NcFTPの場合、特にオプションを指定しなくてもエラーにはなりません。気を付けるとすればインストール先でしょう。デフォルトのインストール先は「--prefix」で指定される「/usr/local」になっています。/usr/localはFHS(UNIXのディレクトリ構造を標準化するための提案)によればユーザコマンドの置き場所として適切なのですが、Mac OS Xの今後のバージョンアップが心配なのと、筆者の場合マシンを一人で使用することもあって、ホームディレクトリの下のmyLocalディレクトリに自分でインストールしたコマンド類をまとめて置くようにしています。 ◇UNIXのディレクトリ構造を標準化するための提案: http://pathname.com/fhs そのためconfigureには「--prefix=$HOME/myLocal 」を付けて実行しました($HOMEは自分のホームディレクトリを表します)。 % ./configure --prefix=$HOME/myLocal <return> creating cache ./config.cache checking for gcc... no checking for cc... cc checking whether the C compiler (cc ) works... yes checking whether the C compiler (cc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether cc accepts -g... yes 〈以下略〉 以上でめでたくMakefileが生成されました。ディレクトリの内容を表示するlsコマンドで確認してみましょう。 % ls <return> CHANGELOG NcFTP_All.dsp autoconf configure sh FIREWALL-PROXY-README NcFTP_All.dsw config.cache configure.in sh_util LICENSE.txt READLINE-README config.h doc sio Makefile README config.h.in install-sh vis Makefile.bin Strn config.log libncftp win Makefile.in WHATSNEW-3.0 config.status ncftp ――――makeでコンパイル コンパイルはmakeコマンドで行います。makeコマンドを引数なしで実行するとMakefileに記述された手順に従ってコンパイル&リンクを行いオブジェクトを生成します。 % make <return> ( cd Strn ; make "CC=cc" "CFLAGS=-D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k" ) cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -DSTRNP_ZERO_PAD=0 -DSTRN_ZERO_PAD=1 Dynscat.c -c cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -DSTRNP_ZERO_PAD=0 -DSTRN_ZERO_PAD=1 Strncpy.c -c cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -DSTRNP_ZERO_PAD=0 -DSTRN_ZERO_PAD=1 Strncat.c -c cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -DSTRNP_ZERO_PAD=0 -DSTRN_ZERO_PAD=1 Strntok.c -c 〈以下略〉 途中で、実行過程の他にワーニングやらエラーやらがだらだらと表示されると思いますが、binディレクトリを見てみるとオブジェクト自体はなんとか生成されたようです。 % ls bin ncftp ncftpbatch ncftpbookmarks ncftpget ncftpls ncftpput ――――make installでインストール コンパイルが終わったら「make install」でインストールします。このとき「-n」オプションを付けると実際にインストールはされずに、実行されるコマンドが表示されます。まあ、インストールするふりをして、変なところにコピーされないかとかを一応調べるわけです。 % make -n install <return> ( cd ncftp ; make "CC=cc" "CFLAGS=-D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k" ) echo ’Done making NcFTP.’ ( cd sh_util ; make "CC=cc" "CFLAGS=-D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k" ) cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -Dsh_util -DHAVE_CONFIG_H -I/Users/Shared/ncftp/ncftp-3.0.3 -I/usr/local/include -I. -I../libncftp -I../Strn -I../sio gpshare.o preffw.o spool.o util.o getline.o version.o ncftpget.c -o ../bin/ncftpget -L../libncftp -L../Strn -L../sio -L/usr/local/lib -lncftp -lStrn -lsio strip ../bin/ncftpget cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -Dsh_util -DHAVE_CONFIG_H -I/Users/Shared/ncftp/ncftp-3.0.3 -I/usr/local/include -I. -I../libncftp -I../Strn -I../sio gpshare.o preffw.o spool.o util.o getline.o version.o ncftpput.c -o ../bin/ncftpput -L../libncftp -L../Strn -L../sio -L/usr/local/lib -lncftp -lStrn -lsio strip ../bin/ncftpput echo ’Done making NcFTP shell utilities.’ ( cd vis ; make "CC=cc" "CFLAGS=-D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k" ) cc -D_LARGEFILE64_SOURCE -g -O2 -Wno-format-y2k -Dvis -DNCFTPPATH=\"/Users/o2/myLocal/bin/ncftp\" -DHAVE_CONFIG_H -I/Users/Shared/ncftp/ncftp-3.0.3 -I/usr/local/include -I. -I../libncftp -I../Strn -I../sio bmed.c wgets.o wutil.o pref.o preffw.o trace.o util.o bookmark.o version.o -o ../bin/ncftpbookmarks -L../libncftp -L../Strn -L../sio -L/usr/local/lib -lncftp -lStrn -lsio -lcurses strip ../bin/ncftpbookmarks echo ’Done making NcFTP full-screen utilities.’ mkdir "/Users/o2/myLocal" "/Users/o2/myLocal/bin" "/Users/o2/myLocal/man" "/Users/o2/myLocal/man/man1" 2>/dev/null echo ’..... Installing the programs .....’ /usr/bin/install -c bin/ncftp "/Users/o2/myLocal/bin/ncftp" 〈以下略〉 (続く) | |
関連リンク |