关于autotools的安装以及使用

来源:互联网 发布:北电网络官网 编辑:程序博客网 时间:2024/05/17 02:05

在嵌入式的工作中,对于编写makefile是不可缺少的技能,但是对于一些大型的项目,编写makefile文件相对来说比较麻烦,但是我们可以借助GNU Autotools工具进行实现。

安装方法:

直接在终端:apt-get install autoconf

安装完成后用 which 命令 进行查看 (使用 which命令 可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令)。


使用步骤:

接下来我是用一个简单的例子来进行总结和归纳,一个最普通的输出 helloworld 的程序。这里交代一下取名为 main.c。

下面对步骤进行讲解和归纳:

1.使用autoscan命令,它将扫描工作目录,生成 configure.scan 文件,然后将这个文件改名为 configure.ac/configure.in。详细步骤如下:


然后记得对  configure.ac 做适当的修改(vi configure.ac),更改如下:


下面对其中的代码进行解释,以便可以看懂其中的意思:

a.   # 号开始的行是注释,其他都是m4 宏命令;(下面会讲到 执行 acloacl 命令 会根据configure.ac的内容生成aclocal.m4文件

b.   configure.ac里面的宏的主要作用是侦测系统

c.   AC_PREREQ宏声明本文要求的 autoconf 版本如本例中的版本 2.65。

d. AC_INIT 宏用来定义软件的名称、版本等信息、作者的E-mail等。

e. AM_INIT_AUTOMAKE是通过手动添加的它是automake所必备的宏, FULL-PACKAGE-NAME是软件名称,VERSION是软件版本号。

f. AC_CONFIG_SCRDIR 宏用来侦测所指定的源码文件是否存在来确定源码目录的有效性.。此处为当前目录下main.c

g. AC_CONFIG_HEADER 宏用于生成config.h文件,以便 autoheader 命令使用。

h. AC_PROG_CC用来指定编译器,如果不指定,默认gcc

i. AC_OUTPUT 用来设定 configure 所要产生的文件,如果是makefileconfigure 会把它检查出来的结果带入makefile.in文件产    生合适的makefile。使用 Automake 时,还需要一些其他的参数,这些额外的宏用aclocal工具产生。

j. AC_CONFIG_FILES宏用于生成相应的Makefile文件。


2.使用 aclocal 命令,扫描 configure.ac 文件生成 aclocal.m4文件, 该文件主要处理本地的宏定义,它根据已经安装的宏、用户定义宏和 acinclude.m4 文件中的宏将 configure.ac 文件需要的宏集中定义到文件 aclocal.m4 中。



3.使用 autoconf 命令生成 configure 文件。这个命令将 configure.ac 文件中的宏展开,生成 configure 脚本。这个过程可能要用到aclocal.m4中定义的宏。



4. 使用 autoheader 命令生成 config.h.in 文件。该命令通常会从 "acconfig.h” 文件中复制用户附加的符号定义。该例子中没有附加的符号定义, 所以不需要创建 "acconfig.h” 文件[2].



5.手工创建Makefile.am文件(vi Makefile.am)。Automake工具会根据 configure.in 中的参量把 Makefile.am 转换成 Makefile.in 文件。


备注:

a.其中的AUTOMAKE_OPTIONS为设置automake的选项. 由于GNU对自己发布的软件有严格的规范, 比如必须附带许可证声明文件COPYING等,否则automake执行时会报错. automake提供了3中软件等级:foreign, gnu和gnits, 供用户选择。默认级别是gnu. 在本例中, 使用了foreign等级, 它只检测必须的文件。

b.bin_PROGRAMS定义要产生的执行文件名. 本例中可以看到要产生的可执行文件名为 hello 。如果要产生多个执行文件, 每个文件名用空格隔开。

c.hello_SOURCES 定义”hello”这个可执行程序所需的原始文件。如果”hello”这个程序是由多个源文件所产生的, 则必须把它所用到的所有源文件都列出来,并用空格隔开。如果要定义多个可执行程序,那么需要对每个可执行程序建立对应的 file_SOURCES。


6.使用 Automake  命令生成 Makefile.in 文件。使用选项 "--add-missing" 可以让 Automake 自动添加一些必需的脚本文件。


备注:

其中会显示有文件未被发现,可以再次执行automake --add -missing来添加


备注:在当前目录创建上面未发现的四个文件,并再次使用 automake ——add-missing 运行一次。发现仍然有四个文件没有被发现,这里用 touch命令进行创建(touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件


7.使用 configure 命令, 把 Makefile.in 变成最终的 Makefile 文件。


这里可以用 ls命令 查看可以发现 makefile文件 已经生成。


8.运行 make 并查看是否生成了可执行文件


结束:程序运行成功。

现在来总结一下 这个的具体步骤,以便进一步的掌握。

1.这个autotools通过 autoscan,aclocal,autoconf,autoheader,automake 依次进行执行

2.首先在创建好 源文件 后,通过autoscan生成 configure.scan,然后将其改名为 configure.ac 并对里面的参数进行配置。

3.然后通过aclocal生产aclocal.m4文件。

4.然后通过autoconf生产 configure文件。

5.使用 autoheader 命令生成 config.h.in 文件。

6.接下来编写 Makefile.am 文件 ,然后使用 Automake  命令生成 Makefile.in 文件,注意要是有缺少文件 使用 automake --add -missing来自动添加必 要的脚步文件。

7.最后使用 configure命令 来生成 Makefile 文件。

声明:本文部分转载于http://blog.csdn.net/scucj/article/details/6079052 对此表示感谢。

0 0
原创粉丝点击