| 
 
| 呵呵!刚刚又练了一下用autotools来生成makefile,呵呵,感觉比前一次好多拉。 
 [root@localhost root]# mkdir -m 777 ./hello             //新建一个文件夹放源文件,其实这相当于一个项目工程文件夹
 
 [root@localhost root]# cd hello
 
 [root@localhost hello]# vim hello.c                //新建一个hello.c的文件,输入如下内容
 
 #include<stdio.h>
 
 int main(void)
 
 {
 
 printf(&quot;Hello, Lammy!\n&quot;);
 
 return 0;
 
 }//呵呵,简单吧
 
 //接下来就开始使用autotools来生成Makefile
 
 [root@localhost hello]# ls
 
 hello.c
 
 [root@localhost hello]# autoscan          //利用它来生成configure.in的原型文件configure.scan
 
 [root@localhost hello]# ls                         //发现有什么不一样了没有
 
 autoscan.log  configure.scan  hello.c
 
 //然后修改configure.scan,并保存为configure.in
 
 [root@localhost hello]# vim configure.scan
 
 
 
 #                                                -*- Autoconf -*-
 
 # Process this file with autoconf to produce a configure script.
 
 
 
 AC_PREREQ(2.57)
 
 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
 
 AC_CONFIG_SRCDIR([hello.c])
 
 AC_CONFIG_HEADER([config.h])
 
 
 
 # Checks for programs.
 
 AC_PROG_CC
 
 
 
 # Checks for libraries.
 
 
 
 # Checks for header files.
 
 
 
 # Checks for typedefs, structures, and compiler characteristics.
 
 
 
 # Checks for library functions.
 
 AC_OUTPUT
 
 
 
 //把它修改为如下:
 
 #                                                -*- Autoconf -*-
 
 # Process this file with autoconf to produce a configure script.
 
 
 
 AC_PREREQ(2.57)
 
 #AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
 
 AC_INIT(hello,1.0)
 
 AM_INIT_AUTOMAKE(hello,1.0)
 
 
 
 AC_CONFIG_SRCDIR([hello.c])
 
 AM_CONFIG_HEADER([config.h])//
 
 
 
 # Checks for programs.
 
 AC_PROG_CC
 
 
 
 # Checks for libraries.
 
 
 
 # Checks for header files.
 
 
 
 # Checks for typedefs, structures, and compiler characteristics.
 
 
 
 # Checks for library functions.
 
 AC_CONFIG_FILES([Makefile])//AC_CONFIG_FILES用于生成Makefile的宏
 
 AC_OUTPUT
 
 
 
 
 
 //保存为configure.in,注意紫罗兰色部分,具体为什么可以看看http://seul.org/docs/autotut/,上面有关各个宏观的作用,不过是英文的
 
 [root@localhost hello]# aclocal     //生成aclocal.m4
 
 [root@localhost hello]# autoconf     //生成configure
 
 [root@localhost hello]# ls         //又多了东西
 
 aclocal.m4       autoscan.log  configure.in     hello.c
 
 autom4te.cache  configure      configure.scan
 
 [root@localhost hello]# autoheader     //生成config.h.in
 
 [root@localhost hello]# ls
 
 aclocal.m4       autoscan.log  configure      configure.scan
 
 autom4te.cache  config.h.in    configure.in  hello.c
 
 //新建一个Makefile.am,它是automake的脚本,很简单
 
 [root@localhost hello]# vim Makefile.am
 
 //输入如下,具体什么我就不介绍啦,记住就行
 
 AUTOMAKE_OPTIONS=foreign
 
 bin_PRONGRAMS =hello
 
 hello_SOURCES =hello.c
 
 [root@localhost hello]# automake --add-missing     //生成configure.in
 
 configure.in: installing `./install-sh'
 
 configure.in: installing `./mkinstalldirs'
 
 configure.in: installing `./missing'
 
 Makefile.am: installing `./depcomp'
 
 [root@localhost hello]# ls
 
 aclocal.m4       config.h.in    configure.scan  install-sh    missing
 
 autom4te.cache  configure      depcomp          Makefile.am  mkinstalldirs
 
 autoscan.log     configure.in  hello.c          Makefile.in
 
 
 
 [root@localhost hello]# ./configure          //生成Makefile
 
 checking for a BSD-compatible install... /usr/bin/install -c
 
 checking whether build environment is sane... yes
 
 checking for gawk... gawk
 
 checking whether make sets $(MAKE)... yes
 
 checking for gcc... gcc
 
 checking for C compiler default output... 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 ANSI C... none needed
 
 checking for style of include used by make... GNU
 
 checking dependency style of gcc... gcc3
 
 configure: creating ./config.status
 
 config.status: creating Makefile
 
 config.status: creating config.h
 
 config.status: executing depfiles commands
 
 [root@localhost hello]# make          //编译并生成可运行的运行文件
 
 make  all-am
 
 make[1]: Entering directory `/root/hello'
 
 source='hello.c' object='hello.o' libtool=no \
 
 depfile='.deps/hello.Po' tmpdepfile='.deps/hello.TPo' \
 
 depmode=gcc3 /bin/sh ./depcomp \
 
 gcc -DHAVE_CONFIG_H -I. -I. -I.      -g -O2 -c `test -f 'hello.c' || echo './'`hello.c
 
 gcc  -g -O2    -o hello  hello.o
 
 make[1]: Leaving directory `/root/hello'
 
 [root@localhost hello]# ls          //看到它了没有
 
 aclocal.m4       config.log       depcomp      Makefile        stamp-h1
 
 autom4te.cache  config.status    hello        Makefile.am
 
 autoscan.log     configure        hello.c      Makefile.in
 
 config.h         configure.in     hello.o      missing
 
 config.h.in      configure.scan  install-sh  mkinstalldirs
 
 [root@localhost hello]# ./hello     //运行下看看
 
 Hello, Lammy!
 
 
 
 //可以看看Makefile发现挺大的,呵呵,不管,能用就行,另外附加几个心得:
 
 1>如果你的源文件有问题,在 make时它会有提示的,所以Makefile的生成和你的源文件正确与否没有联系,所以你修改了源文件时,只要文件名没有改,那么你可以直接从 make开始
 
 2>AC_INIT(hello,1.0)
 
 AM_INIT_AUTOMAKE(hello,1.0)
 
 
 
 AC_CONFIG_SRCDIR([hello.c])
 
 AM_CONFIG_HEADER([config.h])//
 
 这几个宏顺序别弄反啦哦
 | 
 |