• 建立makefile


     一、目的

    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% ",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% ",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 卸载可执行程序

     

  • 相关阅读:
    mysql合并数据
    java协变类型返回
    OSI网络七层模型理解
    mysql性能优化学习
    redis lock 和 tryLock 实际使用区别
    多字段关联同一张表
    第一个Mabits程序
    Mybatis使用Map来实现传递多个参数及Mybati实现模糊查询
    使用Mybatis框架的步骤
    sql小技巧
  • 原文地址:https://www.cnblogs.com/erbing/p/5518939.html
Copyright © 2020-2023  润新知