autoconf和automake的使用

0、下载并安装autoconf和automake

http://ftp.gnu.org/gnu/autoconf/

这是目前最新的autoconf,版本是2.69:

autoconf-latest.tar.gz

http://ftp.gnu.org/gnu/automake/

这是目前最新的automake,版本是1.14:

automake-1.14.tar.gz

 

下载完成之后,进行解压,然后安装,下面用autoconf举例,automake同理(我的环境是OSX,linux可能需要进行微小的改动)

sudo -i
tar–jxvfautoconf-latest.tar
cd autoconf-2.69
./configure
sudoxcode-select -switch /Applications/Xcode.app/Contents/Developer/
make
make install

完成之后,就可以直接使用autoconf了,因为这么make install之后,是直接安装在bin文件夹里边的

 

使用-h,测试一下autoconf是否已经安装完毕了:



同理安装完automake之后,就可以进行下面的步骤了

 

 

1、在目录下新建几个工程需要的测试文件

encrypt.h:

void encrypt(char *message);

encrypt.c:

#include "stdio.h"
#include "encrypt.h"


void encrypt(char *message)
{
	while(*message)
	{
		*message = *message ^ 31;
		message++;
	}
	puts("message encrypt end");
}

checksum.h:

int checksum(char *message);

checksum.c:

#include "checksum.h"


int checksum(char *message)
{
	int c = 0;
	while(*message)
	{
		c += c ^ (int)(*message);
		message++;
	}

	return c;
}

test_code.c:

#include "stdio.h"
#include "encrypt.h"
#include "checksum.h"


int main()
{
	char s[] = "Speak firend and enter";
	encrypt(s);
	printf("Encrypted to '%s'\n", s);
	printf("Checksum is %i\n", checksum(s));

	encrypt(s);
	printf("Decrypted back to '%s'\n", s);
	printf("Checksum is %i\n", checksum(s));

	return 0;
}


2、生成configure

       在当前目录中执行命令autoscan。帮助我们根据目录下的源代码生成一个configure.ac的模板文件configure.scan



3、修改configure.scan

原来的内容为:


修改为:

AC_PREREQ([2.69])
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(test_code,1.0,120440324@163.com)
AM_INIT_AUTOMAKE(test_code,1.0)
AC_CONFIG_SRCDIR([test_code.c])
AC_CONFIG_HEADERS([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_OUTPUT


修改一下文件名,编程configure.ac

mvconfigure.scan configure.ac

 

说明:

(1)以“#”号开始的行均为注释行。

(2)AC_PREREQ 宏声明本文要求的autoconf版本, 如本例中的版本 2.59。

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

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

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

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

(7)AC_PROG_CC用来指定编译器,如果不指定,默认gcc。

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

(9)AC_CONFIG_FILES宏用于生成相应的Makefile文件。

 

 

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




m4是一个宏处理器.将输入拷贝到输出,同时将宏展开.宏可以是内嵌的 ,也可以是用户定义的 .除了可以展开宏,m4还有一些内建的函数,用来引用文件,执行命令,整数运算,文本操作,循环等.m4既可以作为编译器的前端,也可以单独作为一个宏处理器.

 

 

5、用命令autoheader产生configure.h.in



6、新建Makefile.am文件,填入以下内容

AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=test_code
test_code_SOURCES=encrypt.hencrypt.cchecksum.hchecksum.ctest_code.c


7、运行automake


使用选项 "--add-missing" 可以让Automake自动添加一些必需的脚本文件。

 

 

8、测试一下,刚才生成的configure,用来生成Makefile

因为我想安装的目录是/Users/pro/high/output/,所以我需要使用prefix来指定


生成出来了Makefile文件:




9、使用Makefile编译代码

直接执行make命令




10、安装到在configure中指定的文件目录

在当前目录中执行make install




11、检查生成的文件,并执行看看效果

找到/Users/pro/high/output/目录,看到有bin文件夹,下面就有我们已经生成出来的目标文件


运行一下test_code,看到确实是我们想要的功能:




12、卸载刚才make install生成的目标文件

直接使用makeuninstall进行反安装


还可以在工程目录下执行makeclean清理make编译出来的.o文件:




13、文章参考

该文章参考了网上的一些资料,比如:

http://www.laruence.com/2009/11/18/1154.html

等,有些没做记录就没看到了。不过由衷感谢,没有这些资料,仅仅是依靠autoconf和automake的Document是不够的!

不过,假如没有这些GNU工具,可能连自动配置的条件都没有!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值