一、目的

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命令

建立makefile-LMLPHP

3.3 手动建立makefile

l 建立makefile文件,内容如下:

建立makefile-LMLPHP

l 执行make命令,自动编译链接,运行main可执行程序得到结果

建立makefile-LMLPHP

3.4 Autotools自动生成makefile

l 运行autoscan名字自动扫描,生成configure.scan和autoscan.log两个文件

建立makefile-LMLPHP

l 将configure.scan改名为configure.ac,内容如下:

建立makefile-LMLPHP

l aclocal命令扫描configure.ac文件生成的aclocal.m4文件,获取autoconf创建configure所需的宏定义。

l autoconf命令读取configure.ac文件中的宏,生成configure脚本

l autoheader命令生成config.h.in文件

建立makefile-LMLPHP

l 手工创建Makefile.am文件,文件内容如下

l 使用automake命令生成Makefile.in文件。--add-missing选项可以让automake自动添加必需的模版文件

建立makefile-LMLPHP

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

建立makefile-LMLPHP

l Make dist生成压缩包

建立makefile-LMLPHP

l 将压缩包拷贝到example文件夹下,解压

建立makefile-LMLPHP

l ./configure生成makefile

建立makefile-LMLPHP

l make测试目标文件是否正确

l make install进行可执行程序安装

建立makefile-LMLPHP

l 执行可执行文件,结果正确

l 卸载可执行程序

建立makefile-LMLPHP

05-27 07:11