文書の過去の版を表示しています。
Autotoolsの使い方
概要
RPPでは、パッケージの作成のために Autotools を使用しています。
Autotools を使用することで、
$ ./configure $ make $ make install
とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。
インストール
# apt-get install automake libtool
使い方概要
元ファイル準備
configure.ac のテンプレート(configure.scan)生成。
$ autoscan
エディタで configure.ac(configure.scan をベースにする)と Makefile.am をがんばって作成。設定項目はそれなりの数ある。
サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、
SUBDIRS = include auxlib src ...
の順番を依存順(先頭から順に make される)にすることで解決。
configure 生成
$ libtoolize -c -f
–copy(-c)
シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。
–force(-f)
既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。
$ aclocal $ autoheader $ automake -a -c
–add-missing(-a)
パッケージ化に足りないファイルを自動的に生成。
–copy(-c)
オプション時にシンボリックリンクではなくコピーする。
$ autoconf
上記コマンド群で生成されるファイルの流れは下図参照。
修正時
configure.ac などのファイルを修正した場合は、下記コマンドを実行。
$ autoreconf -i -f
–install(-i)
パッケージ化に足りないファイルを自動的に生成。
–force(-f)
既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。
パッケージのコンパイル・インストール方法
基本(コンパイル・インストール)
$ ./configure $ make # make install
掃除
$ make clean
アンインストール
# make uninstall
配布パッケージ(tarball)作成
$ make dist
大掃除
$ make distclean
パッケージ命名規則
[http://archive.linux.or.jp/JF/JFdocs/Software-Release-Practice-HOWTO.html#s2|Linux JF (Japanese FAQ) Project の解説]参照。
プロジェクト名
英大文字やアンダースコア“_”は極力使わない。英小文字+ハイフンを推奨。
バージョン番号
メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。
major.minor.micro
または
major.minor.patch
この他にも、日付で管理することもある。
ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。
current.revision.age
パッケージ名
プロジェクト名+ハイフン(-)+バージョン数字列+拡張子
パッケージ名の例としては、下記のようになる。
foobar-1.2.3.tar.gz
日付で管理する場合の例は下記。
foobar-080707.tar.gz