学习autotools

 1、准备:
     需要工具autoscan aclocal autoheader automake autoconf make 等工具.
  2、测试程序编写:
     建立目录:mkdir include src
     编写程序:include/str.h
  1. #include <stdio.h>
  2. int str(char *string);


      编写程序:src/str.c
   
  1. #include "str.h"
  2. //print string
  3. int str(char *string){
  4.         printf("\n----PRINT STRING----\n\"%s\"\n",string);
  5.         return 0;
  6. }

  7. //interface of this program
  8. int main(int argc , char **argv){
  9.         char str_read[1024];
  10.         printf("Please INPUT something end by [ENTER]\n");
  11.         scanf("%s",str_read);
  12.         return str(str_read );
  13. }


  3、生成configure.ac
    configure.ac是automake的输入文件,所以必须先生成该文件。
    执行命令:
  1. [root@localhost str]# ls
  2. include  src
  3. [root@localhost str]# autoscan
  4. autom4te: configure.ac: no such file or directory
  5. autoscan: /usr/bin/autom4te failed with exit status: 1
  6. [root@localhost str]# ls
  7. autoscan.log  configure.scan  include  src
  8. [root@localhost str]# cp configure.scan configure.ac


    修改 configure.ac
  1. #                                               -*- Autoconf -*-
  2. # Process this file with autoconf to produce a configure script.

  3. AC_PREREQ(2.59)
  4. AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
  5. AC_CONFIG_SRCDIR([include/str.h])
  6. AC_CONFIG_HEADER([config.h])

  7. # Checks for programs.
  8. AC_PROG_CC

  9. # Checks for libraries.

  10. # Checks for header files.

  11. # Checks for typedefs, structures, and compiler characteristics.

  12. # Checks for library functions.
  13. AC_OUTPUT


     修改
  1. AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)


      为
  1. AC_INIT(str,0.0.1, [bug@sounos.org])



FULL-PACKAGE-NAME 为程序名称,VERSION为当前版本, BUG-REPORT-ADDRESS为bug汇报地址
    添加 AM_INIT_AUTOMAKE
    添加 AC_CONFIG_FILES([Makefile])
  1. #                                               -*- Autoconf -*-
  2. # Process this file with autoconf to produce a configure script.

  3. AC_PREREQ(2.59)
  4. #AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
  5. AC_INIT(str, 0.0.1, [bug@sounos.org])
  6. AM_INIT_AUTOMAKE
  7. AC_CONFIG_SRCDIR([include/str.h])
  8. AC_CONFIG_HEADER([config.h])

  9. # Checks for programs.
  10. AC_PROG_CC

  11. # Checks for libraries.

  12. # Checks for header files.

  13. # Checks for typedefs, structures, and compiler characteristics.

  14. # Checks for library functions.
  15. AC_CONFIG_FILES([Makefile])
  16. AC_OUTPUT


4、执行aclocal
  1. [root@localhost str]# aclocal
  2. /usr/share/aclocal/libfame.m4:6: warning: underquoted definition of AM_PATH_LIBFAME
  3.   run info '(automake)Extending aclocal'
  4.   or see http://sources.redhat.com/automake/automake.html#Extending-aclocal


5、制作Makefile.am
  1. [root@localhost str]# cat Makefile.am
  2. #Makefile.am
  3. bin_PROGRAMS    = str
  4. str_SOURCES     = include/str.h src/str.c
  5. str_CPPFLAGS    = -I include/


6、autoheader
  1. [root@localhost str]# autoheader


7、automake必须文件:
  1.     *  install-sh
  2.     * missing
  3.     * INSTALL
  4.     * NEWS
  5.     * README
  6.     * AUTHORS
  7.     * ChangeLog
  8.     * COPYING
  9.     * depcomp


其中
  1.     * install-sh
  2.     * missing
  3.     * INSTALL
  4.     * COPYING
  5.     * depcomp


可以通过automake -a选项自动生成,所以这里只需要建立如下文件
  1. [root@localhost str]# touch NEWS README AUTHORS ChangeLog


8、执行automake
  1. [root@localhost str]# automake -a
  2. configure.ac: installing `./install-sh'
  3. configure.ac: installing `./missing'
  4. Makefile.am: installing `./INSTALL'
  5. Makefile.am: installing `./COPYING'
  6. Makefile.am: installing `./compile'
  7. Makefile.am: installing `./depcomp'


9、autoconf
  1. [root@localhost str]# autoconf
  2. [root@localhost str]# ls
  3. aclocal.m4      autoscan.log  config.h.in   configure.scan  include     Makefile.am  NEWS
  4. AUTHORS         ChangeLog     configure     COPYING         INSTALL     Makefile.in  README
  5. autom4te.cache  compile       configure.ac  depcomp         install-sh  missing      src


10、执行测试:
      执行./configure
  1. [root@localhost str]# ./configure --prefix=/u
  2. checking for a BSD-compatible install... /usr/bin/install -c
  3. checking whether build environment is sane... yes
  4. checking for gawk... gawk
  5. checking whether make sets $(MAKE)... yes
  6. checking for gcc... gcc
  7. checking for C compiler default output file name... a.out
  8. checking whether the C compiler works... yes
  9. checking whether we are cross compiling... no
  10. checking for suffix of executables...
  11. checking for suffix of object files... o
  12. checking whether we are using the GNU C compiler... yes
  13. checking whether gcc accepts -g... yes
  14. checking for gcc option to accept ANSI C... none needed
  15. checking for style of include used by make... GNU
  16. checking dependency style of gcc... gcc3
  17. configure: creating ./config.status
  18. config.status: creating Makefile
  19. config.status: creating config.h
  20. config.status: config.h is unchanged
  21. config.status: executing depfiles commands

       执行 make
  1. [root@localhost str]# make
  2. make  all-am
  3. make[1]: Entering directory `/data/devel/c/str'
  4. if gcc -DHAVE_CONFIG_H -I. -I. -I.  -I include/   -g -O2 -MT str-str.o -MD -MP -MF ".deps/str-str.Tpo" -c -o str-str.o `test -f 'src/str.c' || echo './'`src/str.c; \
  5. then mv -f ".deps/str-str.Tpo" ".deps/str-str.Po"; else rm -f ".deps/str-str.Tpo"; exit 1; fi
  6. gcc  -g -O2   -o str  str-str.o
  7. make[1]: Leaving directory `/data/devel/c/str'

         执行 make install
  1. [root@localhost str]# make install
  2. make[1]: Entering directory `/data/devel/c/str'
  3. test -z "/u/bin" || mkdir -p -- "/u/bin"
  4.   /usr/bin/install -c 'str' '/u/bin/str'
  5. make[1]: Nothing to be done for `install-data-am'.
  6. make[1]: Leaving directory `/data/devel/c/str'     

11、测试程序:
  1. [root@localhost str]# /u/bin/str
  2. Please INPUT something end by [ENTER]
  3. abcksdhfklsdklfdjlkfd

  4. ----PRINT STRING----
  5. "abcksdhfklsdklfdjlkfd"

结束语:这只是一个小例子,如果要把这个用得很好需要不断的磨练。。。。呵呵,见笑了。




转载自:http://bbs.chinaunix.net/thread-727270-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值