一、目的
1.1 熟悉makefile的基本规则,学会建立自己的makefile,通过makefile提高编程效率
1.2 学会通过autotools建立makefile来更好更高效地管理软件项目工程
1.3 理解并熟悉下载、配置、安装标准软件包的流程、原理。
二、内容
2.1 手动建立makefile,包含3个.c源文件和1个.h头文件。其实,就makefile来讲,增加文件数量几乎不影响工作量和复杂度。
2.2 对同样的文件目录,通过automake创建makefile,生成压缩包,能够安装目标文件。
2.3 通过运行make,执行目标文件,检查手动和自动生成的makefile的正确性。
三、过程、结果与分析
3.1 makefile简介
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
3.2 实验准备
l 本次实验我一共建立了3个.c文件和2个.h文件,分别为main.c,fun1.c,fun2.c,fun1.h,fun2.h,函数内容为求圆的面积和周长,内容如下:
main.c
1 #include "fun1.h"
#include "fun2.h"
int main()
{
fun1();
fun1();
}
fun1.h
1 #ifndef __fun1__H__
#define __fun1__H__
extern void fun1(int x);
#endif
fun1.c
#include <stdio.h>
void fun1(int x)
{
printf("Aera of the circle is:f%\n",3.14*x*x);
}
fun2.h
1 #ifndef __fun2__H__
#define __fun2__H__
extern void fun2(int x);
#endif
fun2.c
1 #include <stdio.h>
void fun2(int x)
{
printf("Circumference of the circle is:f%\n",3.14**x);
}
l 安装automake,权限不足,加上sudo命令
3.3 手动建立makefile
l 建立makefile文件,内容如下:
l 执行make命令,自动编译链接,运行main可执行程序得到结果
3.4 Autotools自动生成makefile
l 运行autoscan名字自动扫描,生成configure.scan和autoscan.log两个文件
l 将configure.scan改名为configure.ac,内容如下:
l aclocal命令扫描configure.ac文件生成的aclocal.m4文件,获取autoconf创建configure所需的宏定义。
l autoconf命令读取configure.ac文件中的宏,生成configure脚本
l autoheader命令生成config.h.in文件
l 手工创建Makefile.am文件,文件内容如下
l 使用automake命令生成Makefile.in文件。--add-missing选项可以让automake自动添加必需的模版文件
l 使用configure命令把Makefile.in文件变成最终的Makefile文件
l Make dist生成压缩包
l 将压缩包拷贝到example文件夹下,解压
l ./configure生成makefile
l make测试目标文件是否正确
l make install进行可执行程序安装
l 执行可执行文件,结果正确
l 卸载可执行程序