automakeとは、
./configure
make
makeinstall
でソースファイルからアプリケーションをインストールする為に必要なconfigureやMakefileを
比較的簡単に作成するツール群です。それではautomakeを使ってみよう
アプリケーションのインストールまでの大まかな流れは以下のとおり
1.vi Makefile.am(Makefile.amを作成する)
2.autoscan (configure.scanの生成)
3.mv configure.scan configure.ac
4.vi configure.ac (configure.acの編集)
5.touch NEWS README AUTHORS ChangeLog
6.vi NEWS (NEWS README AUTHORS ChangeLogファイルの加筆・修正)
7.aclocal (マクロと関連ファイルのコピー)
8.automake -ac (Makefile.acからMakefile.inを生成)
9.autoheader (config.h.inを生成)
10.autoconf (config.h.inからconfigureを生成)
11../configure (Makefile.inからMakefileを生成)
12.make (Makefileを実行)
13.make install
14.epicon (アプリケーションの実行)
アプリケーションソースの用意
[root@epicon-4.4]# ls
epicon.h epicon.nr epicon_main.c epicon_uty.c main.c
Makefile.amを作成する(bin_PROGRAMSとepicon_SOURCESは必須、他はアプリケーションに依存)
[root@epicon-4.4]# vi Makefile.am
ACLOCAL_AMFLAGS = -I m4
AM_CTAGSFLAGS = --globals -l c
AM_LDFLAGS = -I /usr/include/ncurses -lncurses
bin_PROGRAMS = epicon
epicon_SOURCES = main.c epicon_main.c epicon_uty.c
mandir = /usr/share/man
man1_MANS = epicon.nr
"Makefile.am" 7L, 221C written
[root@epicon-4.4]# ls
Makefile.am epicon.h epicon.nr epicon_main.c epicon_uty.c main.c
[root@epicon-4.4]# autoscan
autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
configure.acが無いと怒られるが当然!
[root@epicon-4.4]# ls
Makefile.am configure.scan epicon.nr epicon_uty.c
autoscan.log epicon.h epicon_main.c main.c
[root@epicon-4.4]# mv configure.scan configure.ac
[root@epicon-4.4]# vi configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([epicon.h])
AC_CONFIG_HEADER([config.h])
.以下略
.
"configure.ac" 34L, 882C written
変更 AC_INIT(epicon, 4.6, pepolinux@users.sourceforge.jp)
追加 AM_INIT_AUTOMAKE
# FIXME: のコメントがもしあれば修正
[root@epicon-4.4]# cat Makefile.am
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(epicon, 4.6, pepolinux@users.sourceforge.jp)
AC_CONFIG_SRCDIR([epicon_main.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
# Checks for libraries.
# FIXME: Replace `main' with a function in `-lg':
AC_CHECK_LIB([g], [main -lg])
# FIXME: Replace `main' with a function in `-lncurses':
AC_CHECK_LIB([ncurses], [main -lncurses])
# Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([fcntl.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time
.h termios.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_PID_T
AC_HEADER_TIME
# Checks for library functions.
AC_FUNC_FORK
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_SELECT_ARGTYPES
AC_TYPE_SIGNAL
AC_CHECK_FUNCS([alarm dup2 memset select socket strrchr])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
[root@epicon-4.4]# aclocal
[root@epicon-4.4]# ls
Makefile.am autom4te.cache configure.ac epicon.nr epicon_uty.c
aclocal.m4 autoscan.log epicon.h epicon_main.c main.c
[root@epicon-4.4]# autoheader
[root@epicon-4.4]# ls
Makefile.am autom4te.cache config.h.in epicon.h epicon_main.c main.c
aclocal.m4 autoscan.log configure.ac epicon.nr epicon_uty.c
configureのインプットファイルconfig.h.inを生成
[root@epicon-4.4]# automake -ac
configure.ac: installing `./install-sh'
configure.ac: installing `./missing'
Makefile.am: installing `./INSTALL'
Makefile.am: required file `./NEWS' not found
Makefile.am: required file `./README' not found
Makefile.am: required file `./AUTHORS' not found
Makefile.am: required file `./ChangeLog' not found
Makefile.am: installing `./COPYING'
ファイルが無いので怒られる
[root@epicon-4.4]# touch NEWS README AUTHORS ChangeLog
[root@epicon-4.4]# ls
AUTHORS INSTALL NEWS autom4te.cache configure.ac epicon_main.c main.c
COPYING Makefile.am README autoscan.log epicon.h epicon_uty.c missing
ChangeLog NEW aclocal.m4 config.h.in epicon.nr install-sh
[root@epicon-4.4]# automake -ac
[root@epicon-4.4]# ls
AUTHORS INSTALL NEW aclocal.m4 config.h.in epicon.nr install-sh
COPYING Makefile.am NEWS autom4te.cache configure.ac epicon_main.c main.c
ChangeLog Makefile.in README autoscan.log epicon.h epicon_uty.c missing
MakefileのインプットMakefile.inが生成される
[root@epicon-4.4]# autoconf
[root@epicon-4.4]# ls
AUTHORS Makefile.am aclocal.m4 configure epicon.nr main.c
COPYING Makefile.in autom4te.cache configure.ac epicon_main.c missing
ChangeLog NEWS autoscan.log depcomp epicon_uty.c
INSTALL README config.h.in epicon.h install-sh
Makefileを生成する為のconfigureが生成される
つづく
pepoとおやすみ