GNU autotools安装

1、下载软件包,在linux嵌入式开发过程中有很多的工具其实都在GNU的官方网站可以下载到http://www.gnu.org/software/software.html 

2、要安装autotools需要如下几个文件
automake  
autoconf  
M4
安装顺序是M4->  autoconf  ->automake  (很重要!!!!)

安装需要的命令:
tar zxvf **
./configure   (从这开始应该:cd autoconf,因为当前目录中没有.configure文件,以下几个操作命令都是在autoonf目录下操作,记住了)
make
make install

我下载的版本是;
autoconf-2.63.tar.gz
automake-1.9.1.tar.gz
m4-1.4.11.tar.gz

GNU autotools的使用

Linux下,工程管理器 Make可用于自动编译、链接程序的实用工具。我们要做的是写一个makefile 文件,然后用make命令来编译、链接程序。
   Makefile的作用就是让编译器知道要编译一个文件需要依赖其他的哪些文件。这里我们就是要用GNUAutotools来收集系统配置信息并自动生成Makefile文件。
GNU Autotools指的就是下面的五个工具:

(1)aclocal
 (2)autoscan
 (3)autoconf
 (4)autoheader
 (5)automake


在lab文件夹下面建了三个.cpp文件

main.cpp 调用了check.cpp, getinfo.cpp里面的自定义函数

 

1.首先执行autoscan

将生成的configure.scan改名为configure.in

 

修改后的为

 


#                                               -*- Autoconf -*-


# Process this file with autoconf to produce a configure script.


 


AC_PREREQ([2.65])


AC_INIT(AI, 1.0, zhaoxiahust@gmail.com)


AC_CONFIG_SRCDIR([getinfo.cpp])


AC_CONFIG_HEADERS([config.h])


AM_INIT_AUTOMAKE(AI,1.0)


# Checks for programs.


AC_PROG_CXX


 


# Checks for libraries.


 


# Checks for header files.


 


# Checks for typedefs, structures, and compiler characteristics.


 


# Checks for library functions.


 


AC_OUTPUT([Makefile])


 


其中需要注意的是AC_PROG_CXX为c++编译器


如果是.c文件则为AC_PROG_CC


 


 


 


2.运行aclocal生成一个“aclocal.m4”文件和一个缓冲文件夹autom4te.cache,该文件主要处理本地的宏定义。


3.运行autoconf,生成configure


 



4.运行 autoheader,它负责生成config.h.in文件。该工具通常会从“acconfig.h”文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h”文件。



 


创建一个 Makefile.am.这一步是创建Makefile很重要的一步,automake要用的脚本配置文件是Makefile.am,用户需要自己创建相应的文件。之后,automake工具转换成Makefile.in。


 


 


Makefile.am内容


AUTOMAKE_OPTIONS=foreign



bin_PROGRAMS=AI



AI_SOURCES=getinfo.cpp main.cpp check.cpp



 



 



使用automake对其生成“configure.in”文件,在这里使用选项“—add-missing”可以让automake自动添加有一些必需的脚本文件。


 


5.运行automake --add-missing


6.运行./configure,在这一步中,通过运行自动配置设置文件configure,把Makefile.in变成了最终的Makefile。


7.make


生成可执行程序AI


 


OVER


 

 

 

 

 

补充:

今天又将文件分在了source和include目录虾米,唯一要改的就是AI_SOURCES=source/getinfo.cpp source/main.cpp source/check.cpp

这个地方

 

因为又涉及到了简单多线程编程,所以要用到pthread库,但是由于不是linux的默认链接库,所以要在Makefile.am中添加

AI_LDFLAGS=-lpthread

 

 

 

_LDFLAGS:链接选项,对应gcc命令的-L,-I,-shared等选项

 

 

 

还要在configure.in中添加

 


# Checks for libraries.


AC_CHECK_LIB([pthread], [main])