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 に施す。

参考

Tags of current page

,