• 实验四 Makefile


    实验四 Makefile

    一、实验目的

    1.熟悉linux系统,学会简单linux指令

    2.熟悉OK6410-A开发板的烧入步骤

    3.了解Makefile文件的作用和用法

    二、实验仪器

    开发机环境

          操作系统:ubuntu 20.04
          交叉编译环境:arm-linux-gcc 4.6.4 
          6410板子内核源码:linux-3.0.1 
    

    目标板环境

    	OK6410-A     linux-3.0.1 
    

    环境配置看这里

    三、实验内容(原理)

    1.什么是makefile

     Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile 文件的编写。

    所要完成的Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。

    make是一个命令工具,它解释Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

    2.Makefile的功能

    Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。

    四、实验步骤

    1.编写程序

    具体程序见第五模块

    2.

    make
    

    生成可执行文件test

    五、实验程序(包括流程图)

    1.code.c

    #include "code.h"
    #include <stdio.h>
    void circle(float r)
    {
    printf(format_circle,2*PI*r);
    }
    

    2.code.h

    #define PI 3.1415926
    #define format_circle "circle=%f\n"
    

    3.prog.c

    #include "prog.h"
    #include "code.h"
    #include <stdio.h>
    area(float r)
    {
    printf("r=%f\n",r);
    printf(format_area,PI*r*r);
    printf("thank you\n");
    }
    

    4.prog.h

    #define format_area "area=%f\n"
    

    5.test.c

    #include <stdio.h>
    extern area(float);
    extern circle(float);
    main()
    {
    printf("dgjdkfhgkjfdg\n");
    area(2.5);
    circle(2.5);
    return 0;
    }
    

    六、运行结果

    按键按下的屏幕显示:

    七、心得体会

    以前c++学qt的时候对于Makefile其实是一知半解的,只知道它可以按照规定的规则,来将各个源文件链接生成一个可执行文件,但其实是没有深入了解过的。现在对于Makefile不管是规则(需要target,command等),还是Makefile文件中文件定义与命令,有效的宏引用等有了系统性的学习与认知。

  • 相关阅读:
    启动或重启Oracle数据以及监听
    占坑 对自己的目标要求
    线程的使用经验(包括 Thread/Executor/Lock-free/阻塞/并发/锁等)
    接口的调用Client测试
    解决ftp登录问题:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died
    Tomcat7性能调优
    mysql性能调优
    四:JVM调优原理与常见异常处理方案
    redis的线程模型 与 压力测试
    为什么要用消息队列 及 自己如何设计一个mq架构
  • 原文地址:https://www.cnblogs.com/qingjielaojiu/p/15737619.html
Copyright © 2020-2023  润新知