第1章 初めてLinux/UNIX系OSにふれる
エンジニアのための最初の一歩(11)

開発環境(4)

 

1.3開発環境(その4)

 

autoconf(その3)

Makefile.inの作成

 autoconfを使ったパッケージはMakefileを直接含めず,プラットホームに依存しない形でMakefile.inを準備しなければなりません.しかし,開発者が利用しているコンピュータ,ならびにOS以外でmakeが実行されても正しく動作するようにMakefile.inを書くには相当の眼力が必要になります.

 configureは,Makefile.inに現れる@変数名@を,システムをテストした結果で置き換えます.ここでは,mkisofsから例を一つ取り上げてみます.mkisofsのconfigure.inでは,AC_PROG_CCとAC_PROG_ INSTALLを使ってCコンパイラとinstallプログラムを調べています.Makefile.inに書かれた,

  CC = @CC@

  INSTALL = @INSTALL@

はconfigureによって,

  CC = gcc

  INSTALL = /usr/bin/install -c

と置き換えられます.このようにシステムに依存する部分はMakefile.inには@変数名@として記述しておき,configureにテストさせ,その結果でMakefileを作成するときに置き換えるわけです.

 

補助ツール

 autoscanは,configure.inの作成を補助するためのツールです.configure.inの雛形をソースコードから作成し,configure.scanに出力します.configure.scanを確認し,AC_CONFIG_HEADER(config.h)などを修正して,configure.inにすることができます.

 ifnameは,ソースコードをスキャンして#if,#ifdefなどのディレクティブを検索し,名前の一覧を出力します.そして,configure.scanからconfigure.inを作成するときの有用な情報として利用することができます.

 

パッケージのビルド

 ビルド時にはautoconfは必要ありません.configureスクリプトには,多くのオプションが組み込まれています.configureを実行すれば,そのホストでのビルドに必要なプリプロセッサのシンボルやライブラリの位置などを自動的に検出し,Makefile.inからMakefileを作成することができます.

 また,必要であればCへッダファイル(config.h)も作成します.作成されたMakefileを使ってmakeを実行してパッケージをビルドすることができます.

 configureは,同時にconfig.statusとconfig. cache,config.logを作成します.config.statusは直前に実行したconfigureのオプションを記憶しているシェルスクリプトです.config.statusを実行すれば,configureを再度同じオプションで起動したことと同じになります.

 config.cacheには移植性に関するテストを実行した結果が書き込まれます.config.logにはコンパイラなどからのエラーメッセージが書き込まれるファイルです.configureが正しく動作しない場合には,このファイルを参考にデバッグすることになります.

 

automake

 通常,automakeはautoconfと対で利用されます.GNUプロジェクトのMakefileのルール(The GNU Makefile Standards Document)に従ったMakefileを作成することは簡単ではありません.そこで,GNUプロジェクトの開発者たちの作業を軽減するために作成されたツールです.automakeはMakefile.amからMakefile.inを作成します.

 aclocalを使うとconfigure.inとプロジェクトのm4ファイルから自動的にaclocal.m4を作成することができます.

                         *                  *

 本章では,開発者向けに有用だと思われることを中心に解説してきました.Linuxでは,コマンドシェルが日常的な作業のなかで便利に使えること,コマンドベースであっても,プログラミング&ビルドがRAD環境以上に簡単かつ便利に使えることを理解していただければ幸いです.

 

参考文献

1) Brian W. Kernighan,Rob Pike,石田晴久監訳,『UNIXプログラミング環境』,アスキー出版局.

2) Cameron Newham, Bill Rosenblatt,Learning the bash Shell,O’Reilly & Associates.


ひかし・ひでたか メディアラボ(株)

http://www.mlb.co.jp/

 


Copyright 2000 日樫 英孝/増田 佳泰/山岡 賢一/船木 陸議/ 羅 正華/森 友一朗/祐安 重夫/岩田 孝清/海老原 祐太郎/g新部 裕/ 齊藤 正伸

 

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.