autotools でコンパイルする (1. Hello world プログラム)
インストール
./configure
make
make install
でインストールできるようなプログラムを作成するには autotools を使用する。 インストールは Ubuntu 12.04 だと
apt-get install autoconf autotools-dev autoconf-doc
で行える。
autotools について
- Autoconf
- configure スクリプトを作成する
- Automake
- Makefile を作成する
- Libtool
- プラットフォーム非依存の共有ライブラリを作成する
Hello world プログラムを autotools でコンパイルする
http://markuskimius.wikidot.com/programming:tut:autotools のチュートリアルを実行してみる。 手順は、ますは通常の Makefile でコンパイルできるようにしておき、
hello.c
コンパイルしたいファイルを作る。 ここでは、hello.c というファイル名にする。
#include <stdio.h>
int main ()
{
printf("Hello world.\n");
return 0;
}
Makefile
all: hello
clean:
rm -f hello *.o
上のような Makefile を作り
make
でコンパイルできるかどうかを確認する。
make clean
でディレクトリをきれいにしておく。
configure と Makefile.in
autoscan で configure.ac のテンプレートを作る。
autoscan
を実行すると configure.scan ができる。これを configure.ac にする。 ここでは編集しないが、通常は必要に応じて編集する。
mv configure.scan configure.ac
configure は Makefile.in から Makefile を作成する。 とりあえず、Makefile をそのまま Makefile.in にして autoconf を実行する。
mv Makefile Makefile.in
autoconf
これで ./configure と make でコンパイルできる。
./configure
make
hello ができているので
./hello
で動作を確認する。
config.h
autoheader
とすると config.h.in ができる。
./configure
とすると config.h.in から config.h ができる。
FILENAME.in について
一般に autotools のコマンドで FILENAME.in のテンプレートを作成し、 FILENAME を生成するのに FILENAME.in が利用される。
ファイルを変更したとき
必要ならば autoscan、autoconf、autoheader を実行する。
autoscan
mv configure.scan configure.ac
autoconf
autoheader
configure.ac をカスタマイズしてあった場合は、configure.scan をそのまま使うのではなく、 configure.scan を見て必要な変更を configure.ac に施す。