1、autoscan

在源码目录下执行autoscan,生成configure.scan,重命名为configure.in或者configure.ac,然后编辑文件内容:

  1. ===============configure.in内容开始=====================
  2. # -*- Autoconf -*-
  3. # Process this file with autoconf to produce a configure script.
  4. AC_INIT(helloworld, 1.0, ***@163.com)
  5. AM_INIT_AUTOMAKE(helloworld, 1.0)
  6. # Checks for programs.
  7. AC_PROG_CC
  8. # Checks for libraries.
  9. # Checks for header files.
  10. # Checks for typedefs, structures, and compiler characteristics.
  11. # Checks for library functions.
  12. AC_OUTPUT(Makefile)
  13. ===============configure.in内容结束=====================

2、aclocal、autoconf

然后执行命令aclocal和autoconf,分别会产生aclocal.m4及configure两个文件

3、新建Makefile.am文件

  1. AUTOMAKE_OPTIONS=foreign
  2. bin_PROGRAMS=helloworld
  3. helloworld_SOURCES=helloworld.c

4、automake

执行automake -add-missing

5、./configure和make

==================================================================================

针对上面提到的各个命令,我们再做些详细的介绍

  1.   1. autoscan
  2.   autoscan 用来扫描源代码目录生成configure.scan文件的 .autoscan
  3. 可以用目录名做为参数,但如果你不使用参数的 话,那么autoscan将认为使用的是当前目录.
  4. autoscan将扫描你所指定目录中的 源文件,并创建configure.scan文件.
  5.   2. configure.scan
  6.   configure.scan包含了系统配置的 基本选项,里面都是 一些宏定义.我们需要将它改名为
  7. configure.in
  8.   3. aclocal
  9.   aclocal 一个perl 脚本程序.aclocal根据configure.in文件的 内容
  10. ,自动生成aclocal.m4文件.aclocal 定义是 "aclocal - create
  11. aclocal.m4 by scanning configure.ac".
  12.   4. autoconf
  13.   autoconf 用来产生configure文件的 .configure 一个脚本,它能设置
  14. 源程序来适应各种不同的操作系统平台,并且根据不同的 系统来产生合适的 Makefile,从而可以使
  15. 你的源代码能在不同的操作系统平台上被编译出来.
  16.   configure.in文件的 内容是 一些宏,这些宏经过autoconf 处理后会变成检查系统
  17. 特性.环境变量.软件必须的 参数的 shell脚本.configure.in文件中的 宏的 顺序并没
  18. 有规定,但是 你必须在 所有宏的 最前面和最后面分别加上AC_INIT宏和AC_OUTPUT宏.
  19.    configure.ini中:
  20.   #号表示注释,这个宏后面的 内容将被忽略.
  21.   AC_INIT(FILE)
  22.   这个宏用来检查源代码所在 路径.
  23. AM_INIT_AUTOMAKE(PACKAGE, VERSION)
  24.    这个宏是 必须的 ,它描述了我们将要生成的 软件包的 名字及其版本号:PACKAGE是软件包
  25. 的名字,VERSION 版本号.当你使用make dist命令时,它会给你生成一个类似
  26. helloworld-1.0.tar.gz 软件发行包,其中就有对应的 软件包的 名字和版本号.
  27. AC_PROG_CC
  28.   这个宏将检查系统所用的 C编译器.
  29. AC_OUTPUT(FILE)
  30.   这个宏是 我们要输出的 Makefile 名字.
  31.   我们在 使用automake时,实际上还需要用到其他的 一些宏,但我们可以用aclocal 来帮
  32. 我们自动产生.执行aclocal后我们会得到aclocal.m4文件.
  33.   产生了configure.inaclocal.m4 两个宏文件后,我们就可以使用autocon
  34. f来产生configure文件了.
  35.   5. Makefile.am
  36.   Makefile.am 用来生成Makefile.in ,需要你手工书写.Makefile.
  37. am中定义了一些内容:
  38. AUTOMAKE_OPTIONS
  39.   这个是 automake 选项.在 执行automake时,它会检查目录下是 否存在 标准
  40. GNU软件包中应具备的各种文件,例如AUTHORS.ChangeLog.NEWS等文件.
  41. 我们将其设置成foreign时,automake会改用一般软件包的 标准来检查.
  42. bin_PROGRAMS
  43.   这个是 指定我们所要产生的 可执行文件的 文件名.如果你要产生多个可执行文件,
  44. 那么在各个名字间用空格隔开.
  45. helloworld_SOURCES
  46.   这个是 指定产生"helloworld"时所需要的 源代码.如果它用到了多个源文件,
  47. 那么请使用空格符号将它们隔开.比如需要helloworld.h,helloworld.c那么请写成:
  48. helloworld_SOURCES= helloworld.h helloworld.c.
  49.   如果你在 bin_PROGRAMS定义了多个可执行文件,则对应每个可执行文件都要定义相对的
  50. filename_SOURCES.
  51.   6. automake
  52.   我们使用automake --add-missing来产生Makefile.in.
  53.   选项--add-missing 定义是 "add missing standard files
  54. to package",它会让automake加入一个标准的 软件包所必须的 一些文件.
  55.   我们用automake产生出来的 Makefile.in文件是 符合GNU Makefile惯例
  56. ,接下来我们只要执行configure这个shell 脚本就可以产生合适的 Makefile
  57. 件了.
  58.   7. Makefile
  59.   在符合GNU Makefiel惯例的Makefile中,包含了一些基本的、预先定义的操作:
  60. make
  61.   根据Makefile编译源代码,连接,生成目标文件,可执行文件.
  62. make clean
  63.   清除上次的make命令所产生的object文件(后缀为".o" 文件)及可执行文件.
  64. make install
  65.   将编译成功的 可执行文件安装到系统目录中,一般为/usr/local/bin目录.
  66. make dist
  67.   产生发布软件包文件(即distribution package).这个命令将会将可执行文件及相关
  68. 文件打包成一个tar.gz压缩的 文件用来作为发布软件的 软件包.
  69.   它会在 当前目录下生成一个名字类似"PACKAGE-VERSION.tar.gz" 文件.PA
  70. CKAGEVERSION,是 我们在 configure.in中定义的 AM_INIT_AUTOM
  71. AKE(PACKAGE, VERSION).
  72. make distcheck
  73.   生成发布软件包并对其进行测试检查,以确定发布包的正确性.

autoscan; aclocal; autoconf; automake --add-missing; ./configure; make的更多相关文章

  1. 自动生存Makefile教程 autoscan aclocal autoconf autoheader automake configure

    LZ没学过makefile的写法,只知道使用tab.于是乎发现了autotools系列工具 基本流程是:autoscan.aclocal.autoconf.autoheader.automake.co ...

  2. autoconf / automake工具使用介绍

    本文转自:http://blog.csdn.net/gulansheng/article/details/42683809 一.简介 作为Linux下的程序开发人员,一定都遇到过Makefile,用m ...

  3. autoconf automake libtool

    这是一个 autoconf / automake 的 "Hello World"gztt.ll@gmail.com 主要步骤是- 准备工程目录结构和程序- autoscan 生成 ...

  4. Autoconf/Automake工具简介

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...

  5. cmake与autoconf+automake

    cmake与autoconf+automakes是同类的编译工具,本人常用的是cmake. 这有一篇对比的文章,记录一下. cmake与autoconf+automake的对比

  6. [strongswan][autoconf][automake][cento] 在CentOS上编译strongswan git源码时遇到的autoconf问题

    编译strongswan的git源码问题 1. 概述 首先,我们想要通过源码编译strongswan.当满足以下条件时,通常你会遇见此问题: 源码时通过git clone的得来的,而不是官网下载的源码 ...

  7. 手动安装m4, autoconf, automake, libtool

    转自http://ruby-china.org/topics/2434 系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就push错啦,懒得从头再来,上传到Ru ...

  8. 安装 Autoconf, Automake & Libtool

    今天在使用sudo apt-get install命令安装autoconf和automake时,出现了问题,说是不能sudo apt-get install安装这些软件似乎不是最新的.由此,我通过搜索 ...

  9. 安装m4,autoconf,automake

    ###安装m4 wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz \ && tar -xzvf m4-1.4.13.tar. ...

随机推荐

  1. 转】Nginx+tomcat配置集群负载均衡

    原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299         感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...

  2. Spark SQL概念学习系列之为什么使用 Spark SQL?(二)

    简单地说,Shark 的下一代技术 是Spark SQL. 由于 Shark 底层依赖于 Hive,这个架构的优势是对传统 Hive 用户可以将 Shark 无缝集成进现有系统运行查询负载. 但是也看 ...

  3. cocos2d-x 3.0 创建工程的模板

    将下面的代码拷贝到文本文件中,重命名文件为 cocos3.0创建工程.bat @echo off echo -------------------------create project with p ...

  4. struts2+Hibernate4+spring3+EasyUI环境搭建之五:引入jquery easyui

    1.下载jquery easyui组件     http://www.jeasyui.com/download/index.php 2.解压 放到工程中  如图 3.jsp引入组件:必须按照如下顺序 ...

  5. Educational Codeforces Round 3 E. Minimum spanning tree for each edge (最小生成树+树链剖分)

    题目链接:http://codeforces.com/contest/609/problem/E 给你n个点,m条边. 问枚举每条边,问你加这条边的前提下组成生成树的权值最小的树的权值和是多少. 先求 ...

  6. CodeForces 705A Hulk (水题)

    题意:输入一个 n,让你输出一行字符串. 析:很水题,只要判定奇偶性,输出就好. 代码如下: #pragma comment(linker, "/STACK:1024000000,10240 ...

  7. Java NIO类库Selector机制解析(下)

    五.  迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去挨个侦听每一个Channel ...

  8. [Windows驱动开发](一)序言

    笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓——内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程 ...

  9. Enterprise Library 4 数据访问应用程序块

    Enterprise Library 数据访问应用程序块简化了实现常规数据访问功能的开发任务.应用程序可以在各种场景中使用此应用程序块,例如为显示而读取数据.传递数据穿过应用程序层( applicat ...

  10. WCF 新手教程二

    基本知识: [ServiceContract] Attribute 能够有以下Property 的: CallbackContract 设置callback的类型:Duplicate指Service ...