Advertisement

韦东山提供的Makefile文件。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本程序所采用的Makefile结构分为三类,旨在规范构建流程。第一类是顶层目录下的Makefile,它主要负责定义根目录下需要包含进程序的源文件以及子目录。第二类是顶层目录下的Makefile.build,这部分配置最为复杂,其核心功能是将特定目录下及其所有子目录中的编译所需文件打包成可执行的built-in.o。详细信息请参考配套视频教程。第三类是各级子目录下的Makefile,它们通常形式较为简洁,例如:`EXTRA_CFLAGS := CFLAGS_file.o := obj-y += file.o`。这里的 `obj-y += file.o` 表示将当前目录下名为file.c的文件编译入程序中,而 `obj-y += subdir/` 则指示程序进入subdir子目录以查找并包含其中的文件,具体哪些文件需要包含则由subdir目录下的Makefile自行决定。此外,`EXTRA_CFLAGS` 变量用于为当前目录下所有文件(不包括其子目录)设置额外的编译选项,而 `CFLAGS_xxx.o` 则仅为当前目录下名为xxx.c的文件设置特定的编译选项;这两个变量可以根据需要选择是否定义。值得注意的是,“subdir/”中的斜杠/字符不可省略。同时,顶层Makefile中的CFLAGS在编译任意一个.c文件时都会被应用,而CFLAGS和EXTRA_CFLAGS与CFLAGS_xxx.o共同构成了特定.c文件的编译选项。 此外,顶层Makefile除了指定要包含的文件和子目录外,还主要定义工具链前缀(CROSS_COMPILE)、编译参数(CFLAGS)以及链接参数(LDFLAGS)。这些参数通过 `export` 命令导出到文件中进行使用。 在使用该套Makefile时,建议按照以下步骤操作:首先将顶层Makefile和 Makefile.build 放置在程序的顶层目录下;然后,在每个子目录下创建一个空白的Makefile;接着,确定需要编译的源文件并修改顶层目录和各个子目录Makefile中的 `obj-y` 变量来指定要包含的文件或子目录;接下来,根据项目需求调整编译选项和链接选项:在顶层Makefile中修改 `CFLAGS` 来设置所有 .c 文件编译时使用的通用选项;在顶层 Makefile 中修改 `LDFLAGS` 来设置最终应用程序的链接选项;而在各个子目录 Makefile 中分别定义 `EXTRA_CFLAGS` 和 `CFLAGS_xxx.o` 变量以添加针对特定文件的额外编译选项(这些选项可选择性地定义);最后, 需要明确指定使用的编译器, 通过修改顶层 Makefile 中的 `CROSS_COMPILE` 参数来指定工具链的前缀 (例如 arm-linux-) 并确定最终应用程序的名字, 通过修改顶层 Makefile 中的 `TARGET` 参数进行设置。最后, 使用命令“make”进行编译, 使用命令“make clean”清除已生成的文件, 使用命令“make distclean”则可以彻底清除所有构建产物。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 通用Makefile
    优质
    韦东山的通用Makefile文件提供了一系列适用于嵌入式系统开发的标准构建脚本,简化了项目管理和编译过程。 本程序的Makefile分为三类:1. 顶层目录下的Makefile;2. 顶层目录下的Makefile.build文件;3. 各级子目录中的Makefile。 一、各级子目录的Makefile: 这类Makefile最为简单,其形式如下所示: ```makefile EXTRA_CFLAGS := CFLAGS_file.o := obj-y += file.o obj-y += subdir/ ``` 其中,“`obj-y += file.o`”表示将当前目录下的文件file.c编译进程序中;“`obj-y += subdir/`”则意味着需要进入名为subdir的子目录寻找并加入相关文件,具体由该子目录内的Makefile决定。注意: 1. “subdir/”中的斜杠不可省略。 2. 顶层Makefile定义的CFLAGS在编译任意一个.c文件时都会使用到。 3. CFLAGS、EXTRA_CFLAGS及CFLAGS_xxx.o三者共同决定了xxx.c的编译选项。 二、顶层目录下的Makefile: 这类Makefile主要负责指定根目录下需要加入程序中的文件和子目录,并定义工具链前缀(如:`CROSS_COMPILE`)、编译参数(如:`CFLAGS`)及链接参数(如:LDFLAGS)。这些变量通过export命令导出。 三、顶层目录下的Makefile.build: 这是最复杂的一部分,其功能在于将某个目录及其所有子目录中需要加入程序的文件进行编译,并打包成built-in.o。详细说明请参考相关教程视频或文档。 四、如何使用这套Makefile系统: 1. 将顶层目录中的`Makefile`和`Makefile.build`放入程序的顶级位置,在每个子目录下创建一个空白的Makefile。 2. 确定要编译哪些源文件:通过修改各层级下的obj-y来指定需要加入到最终可执行文件中的.o目标,例如: ```makefile obj-y += xxx.o obj-y += yyy/ ``` 3. 设置编译和链接选项:在顶层Makefile中调整`CFLAGS`(所有.c文件的通用编译参数)及`LDFLAGS`(最终应用程序的连接参数);并在各个子目录下的Makefile里添加特定于该目录或单个源文件的额外编译标志。 4. 指定使用的交叉编译器:通过修改顶层Makefile中的CROSS_COMPILE定义,设置工具链前缀(例如arm-linux-)来指定正确的交叉编译环境。 5. 定义应用程序名称:在顶层Makefile中设定TARGET变量以指明最终生成的应用程序文件名。 6. 编译过程: - 使用`make`命令进行源代码的构建; - 通过执行`make clean`清理已产生的中间目标和对象文件; - 执行`make distclean`则会彻底清除所有由Makefile创建出来的产物。
  • MMU代码档.doc
    优质
    该文档为韦东山老师关于MMU(内存管理单元)的手写代码教程及注释,旨在帮助学习者深入理解嵌入式系统中MMU的工作原理和实现方法。 韦东山MMU代码是学习ARM的重要资料。
  • Linux书籍2
    优质
    《韦东山的Linux书籍》是一套深受嵌入式系统爱好者欢迎的学习资料,作者以其丰富的实战经验深入浅出地讲解了Linux操作系统的基础知识和应用技巧。 韦东山的《Linux》书籍是很难找到的好书,非常适合配合他的教程来学习嵌入式系统。由于文件大小限制,我将内容压缩成了三个压缩包。
  • Linux书籍3
    优质
    《韦东山的Linux书籍3》是深受欢迎的技术作者韦东山编写的又一力作,专注于深度讲解和实战演练Linux操作系统相关技术。本书通过丰富的实例帮助读者掌握Linux系统的开发与应用技巧,非常适合希望深入了解Linux内核及系统编程的学习者阅读。 韦东山的《Linux》书籍非常难得,内容优质,非常适合配合他的教程一起学习嵌入式系统。由于文件大小限制,我将书分成了三个压缩包进行上传。
  • Linux书籍1
    优质
    《韦东山的Linux书籍》是由知名嵌入式Linux专家韦东山编著的一系列教程,深入浅出地讲解了Linux操作系统及其应用开发技术。适合初学者和进阶读者参考学习。 韦东山的《Linux》书籍是学习嵌入式系统的好资料,在其他地方很难找到这样的资源。由于文件大小限制,我将内容压缩成了三个压缩包。这本书可以配合他的教程一起学习嵌入式技术。
  • 原理图解析笔记
    优质
    《韦东山硬件原理图解析笔记》是一本深入浅出地讲解嵌入式系统硬件设计与分析的专业书籍。通过详细剖析各类经典电路图,帮助读者掌握硬件开发的核心技能和设计理念。 这段笔记是根据韦东山的视频整理而成,适合初级嵌入式软件开发人员参考使用。
  • 教学视频汇总
    优质
    《韦东山教学视频汇总》是一系列全面覆盖嵌入式系统开发技术的教学资源集合,由知名讲师韦东山精心制作。该系列视频深入浅出地讲解了各种专业知识和实践技巧,适合不同层次的学习者参考学习。无论是初学者还是进阶开发者,都能从中受益匪浅,成为嵌入式领域的高手。 韦东山的视频可以通过迅雷下载,无需再费力在网上寻找。提供ed2k链接即可实现便捷下载。
  • 电子相册源码
    优质
    《韦东山电子相册源码》是一款由知名嵌入式技术专家韦东山编写的开源软件,为用户提供了便捷的照片管理和展示解决方案。该源码基于Linux系统开发,采用C语言编写,支持图片的高效浏览、搜索和分类功能,并提供详细的注释与文档,方便开发者二次开发及应用。 韦东山电子相册代码
  • FreeRTOS入门作业一
    优质
    《韦东山FreeRTOS入门作业一》是针对初学者设计的嵌入式操作系统FreeRTOS学习教程的第一部分实践任务,旨在通过动手操作帮助学生理解并掌握FreeRTOS的基础知识与应用技巧。 FreeRTOS是一款开源且轻量级的实时操作系统(RTOS),主要应用于嵌入式系统特别是资源有限的微控制器环境当中。本段落将围绕韦东山老师的“FreeRTOS快速入门之第一个作业”进行深入探讨,帮助初学者迅速掌握FreeRTOS的基本概念和操作技巧。 首先我们需要理解什么是实时操作系统。这类操作系统能够在规定的时间内对特定输入做出响应,并且具有任务调度确定性和时间约束的特点。由于其高效性、小巧体积以及灵活性,FreeRTOS在工业控制、物联网设备及消费电子产品等领域得到了广泛应用。 在使用FreeRTOS时,任务(Task)是执行的基本单位之一,每个任务拥有独立的堆栈和运行路径。通过内置的任务调度器,它可以同时处理多个任务以提高系统的并发性和效率。“第一个作业”中会涉及如何创建和管理这些任务,并学习设置它们的不同优先级。 FreeRTOS采用两种主要机制进行任务调度:优先级调度与时间片轮转法。前者依据各任务的优先级别来决定运行顺序;后者则在同等重要性的任务之间轮流执行,确保系统公平地分配资源。实际开发时需要根据项目需求合理设定不同任务间的优先关系。 信号量(Semaphore)是另一个关键概念,在多线程环境中用于控制共享资源访问权限的一种机制。“第一个作业”中可能会接触到互斥锁(Mutex)和计数器信号量(Counting Semaphore),它们分别适用于独占式或数量限制式的资源共享场景。 此外,队列(Queue)也是FreeRTOS中的重要通信手段之一。它允许任务之间或者中断服务例程与任务间安全地交换数据信息。根据具体需求的不同,可以使用不同类型的消息传递机制如消息队列、二进制信号等来实现高效的数据传输功能。 通常情况下,“FreeRTOSDemo”压缩包内包含一个示例工程文件夹供学习者参考和实践操作中所涉及的概念和技术点。这些资源包括任务创建代码段、各种同步控制工具的使用案例以及配置文档,如“FreeRTOSConfig.h”。通过研究并调整相关程序源码,可以加深对整个框架运行机制的理解。 综上所述,“韦东山老师”的入门课程将带领大家接触实时操作系统领域,并借助一系列动手实践项目掌握如何在单片机环境中部署及运用FreeRTOS。通过本教程的学习不仅能够巩固理论知识基础,更能显著提升实际编程技能水平,在实践中不断探索成为优秀的FreeRTOS开发者。