http://zhwen.org/?p=articles/automake

AutoMake 学习笔记

作者: 许振文
过程记录:
1. autoscan
2. 修改configure.scan,重命名为configure.in,编辑Makefile.am
3. 运行aclocal
4. autoconf
5. automake --add-missing
6. ./configure && make && make install了。
制作目录结构及文件:
helight@helight:myshell$ ls
src
helight@helight:myshell$ ls src/
myshell.c
helight@helight:myshell$
接下来运行“autoscan”并且编辑相关文件:
1.将"configure.scan"重命名为"configure.in"。
2.在本文件夹和子文件夹中建立Makefile.am文件。
helight@helight:myshell$ autoscan 
helight@helight:myshell$ ls
autoscan.log  configure.scan  src
helight@helight:myshell$ mv configure.scan configure.in
helight@helight:myshell$ vim configure.in 
helight@helight:myshell$ vim Makefile.am
helight@helight:myshell$ vim src/Makefile.am
修改后的configure.in
#                                               -*- Autoconf -*-                          
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT("myshell", "0.01", "helight.xu@gmail.com")
AC_CONFIG_SRCDIR([src/myshell.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE("myshell", "0.01")

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([stdlib.h string.h unistd.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_PID_T
AC_TYPE_UID_T

# Checks for library functions.
AC_FUNC_FORK
AC_FUNC_MALLOC
AC_CHECK_FUNCS([memset strrchr])
AC_CONFIG_FILES(Makefile
        src/Makefile)
AC_OUTPUT
与autoscan生成的文件相比,主要添加修改了以下几行:
AC_INIT("myshell", "0.01", "helight.xu@gmail.com")
AM_INIT_AUTOMAKE("myshell", "0.01")
AC_CONFIG_FILES(Makefile
        src/Makefile)
新建立的Makefile.am文件的内容
helight@helight:myshell$ cat Makefile.am 
#Makefile.am
SUBDIRS = src
helight@helight:myshell$
新建立的src/Makefile.am文件的内容
helight@helight:myshell$ cat src/Makefile.am 
#src/Makefiel.am
bin_PROGRAMS = myshell
myshell_SOURCES = myshell.c

helight@helight:myshell$ 
接下来运行aclocal
此时会生成aclocal.m4和autom4te.cache。
helight@helight:myshell$ aclocal
helight@helight:myshell$ ls
aclocal.m4  autoscan.log  configure.in  Makefile.am  src
helight@helight:myshell$
再运行:autoconf生成configure文件.
helight@helight:myshell$ autoconf 
helight@helight:myshell$ ls
aclocal.m4      autoscan.log  configure.in  src
autom4te.cache  configure     Makefile.am
helight@helight:myshell$
再运行autohead 生成config.h.in
helight@helight:myshell$ autoheader 
helight@helight:myshell$ ls
aclocal.m4      autoscan.log  configure     Makefile.am
autom4te.cache  config.h.in   configure.in  src
helight@helight:myshell$
最后运行automake --add-missing 就能得到Makefile.in
helight@helight:myshell$ automake --add-missing
configure.in: installing `./install-sh'
configure.in: installing `./mkinstalldirs'
configure.in: installing `./missing'
Makefile.am: installing `./COPYING'
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
src/Makefile.am: installing `./depcomp'
helight@helight:myshell$ ls
aclocal.m4      config.h.in   COPYING  install-sh   missing
autom4te.cache  configure     depcomp  Makefile.am  mkinstalldirs
autoscan.log    configure.in  INSTALL  Makefile.in  src
helight@helight:myshell$
这里可以看到提示缺少一些文件。但这些文件是可以不要的。
可以configure了
helight@helight:myshell$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for pid_t... yes
checking for uid_t in sys/types.h... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for memset... yes
checking for strrchr... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: executing depfiles commands
helight@helight:myshell$ 
编译make
helight@helight:myshell$ make
最后附上一张automake的工作流程图:
automake
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值