使用automake等命令自动生成Makefile文件

Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多。好在Linux为我们提供了自动生成功能完善的Makefile文件的工具autoconf/automake。本文讲述如何使用它们生成Makefile文件。要用到的工具组主要包括autoconf,automake,perl语言环境和m4。

可以使用命令 rpm -qa | grep - auotomake 查看是否安装了 automake

若没有安装 使用命令:apt-get install automake 


下面以实例演示如何使用automake等生成Makefile文件。

 main.c

1  写一个简单的程序,本例写了个简单的计算斐波那契数的程序,有三个文件组成:main.c,fib.c,fib.h,代码如下:

 main.c

1 #include

2 #include"fib.h"

3 int main()

4 {

5 int n=0;

6 printf("input n=\n");

7 scanf("%d",&n);

8 printf("fib(%d=%d\n",n,fib(n));

10 return 0;

11 }

fib.h

int fib(int n);

fib.c

1 #include"fib.h"

2 int fib(int n)

3 {

4 if(n==0)

5 return 0;

6 if(n==1||n==2)

7 return 1;

8 return fib(n-1)+fib(n-2);

9 }

新建上述三个文件:mkdir main.c  fib.h fib.c 

查看命令:ls 


使用autoscan 生成configure.scan文件,将其命名为configure.ac,并做适当修改。如下:


configure.scan内容如下:


修改configure.ac内容如下:

AC_INIT()中分别应填程序的名字,版本,和作者的联系方式(一般是邮箱)

添加一行AM_INIT_AUTOMAKE(),参数添加程序名字,版本号

最后AC_OUTPUT()生成的文件。


3. 使用aclocal工具生成aclocal.m4

4使用autoconf工具生成configure文件


5 使用autoheader使用config.h.in文件


6用vi生成一个空文件Makefile.am, 并编辑如下三项。

第一项:软件等级,有三个候选项:foreign,gnu,gnits

第二项:生成的可执行文件名

第三项:生成可执行文件所需要的原始文件,有多个文件时用空格隔开,如本例:


7  使用automake生成Makefile.in文件,内容如下:


8  运行configure配置生成最终的Makefile文件


9  使用Makefile编译,运行程序


还可以将代码打包发布:


这些命令功能强大,很多参数的意思这里没列出来,可以查阅相关书籍和手册。本文旨在展示整个过程,和最常用到的参数。以后写程序特别是文件较多时是不是方便了很多?

你可能感兴趣的:(使用automake等命令自动生成Makefile文件)