pepoとネットワークを語ろう

40年前からこれまでとこれからのネットワークを語る

automakeを使ってみよう その1

2009-06-26 10:25:00 | Linux

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とおやすみ


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。