ErBing

往事已经定格,未来还要继续。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 一、目的

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.cfun1.cfun2.cfun1.hfun2.h,函数内容为求圆的面积和周长,内容如下:

main.c
1
#include "fun1.h"
2 #include "fun2.h" 3 int main() 4 { 5 fun1(5); 6 fun1(5); 7 }
fun1.h
1
#ifndef __fun1__H__ 2 #define __fun1__H__ 3 extern void fun1(int x); 4 #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__ 2 #define __fun2__H__ 3 extern void fun2(int x); 4 #endif
fun2.c
1
#include <stdio.h> 2 void fun2(int x) 3 { 4 printf("Circumference of the circle is:f%\n",3.14*2*x); 5 }

l 安装automake,权限不足,加上sudo命令

 

3.3 手动建立makefile

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

 

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

 

3.4 Autotools自动生成makefile

l 运行autoscan名字自动扫描,生成configure.scanautoscan.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 卸载可执行程序

 

 

posted on 2016-05-23 10:17  ErBing  阅读(1298)  评论(0编辑  收藏  举报