linux实验三makefile,实验平台上Makefile详细的解释

作者:甘老师,华清远见嵌入式学院讲师。

# CORTEX-A8 PERI DRIVER CODE

# VERSION 2.0

# ATHUOR www.linuxidc.com

# MODIFY DATE

#2013.03.28  Makefile

/***(下面的解释将用这个的形式进行标注)

写好的源文件,要编译成二进制文件.需要指定工具链的,这里指定我们的工具链是arm-none-eabi-,(arm体系结构,none厂商,eabi是编译环境,亦是arm-abi的编译环境),这里面的eabi的内容很多,可以理解成一个源文件是以何种方式生成可执行的二进制文件.最后NAME指定是这个工程的工程名

*/

CROSS_COMPILE=arm-none-eabi-

NAME=rtc

#==============================================================================================================#

/***为了使我们的Makefile简洁,需要将一些编译选项统统定义在CFLAGS中

-g 表示为了调试gdb使用

-O0 表示优化级别为0,就是不进行优化

-mabi=apcs-gnu  使用gnu的apcs(ARM PROCEDUCE CALL STANDARD),它是指定用何种方式来实现函数的调用

-mfpu=neno 硬件浮点单元

-fno-builtin 表示不要使用编译器中默认的一些简单的内建函数,这里是因为我们重写了printf(使用了puts putc等等,将输出指定到串口上,输出到终端上),如果不使用这个编译选项,printf的输出结构将输出到tty上,也在我们的开发板上并没有这么一个用法。

-nostdinc  不要在标准系统目录中寻找头文件.只搜索`-I'选项指定的目录(以及当前目录,如果合适).

指定目标连接器

LD= $(CROSS_COMPILE)ld

指定目标编译器

CC= $(CROSS_COMPILE)gcc

目标复制命令生成二进制文件

OBJCOPY = $(CROSS_COMPILE)objcopy

目标倾倒命令(有点望文生义了)用来创建一个反汇编代码来检查生成的目标文件

OBJDUMP = $(CROSS_COMPILE)objdump

*/

CFLAGS += -g  -O0  -mabi=apcs-gnu -mfpu=neon -mfloat-abi=softfp  -fno-builtin \

-nostdinc  -I ./common/include

LD= $(CROSS_COMPILE)ld

CC= $(CROSS_COMPILE)gcc

OBJCOPY = $(CROSS_COMPILE)objcopy

OBJDUMP = $(CROSS_COMPILE)objdump

#==============================================================================================================#

/**

1、wildcard : 扩展通配符

2、notdir : 去除路径

3、patsubst :替换通配符

注意下面的操作仅仅是一个字符串的通配、替换工作

OBJSss :wildcard把 指定工程目录下的根目录/ 、 start/ 和 common/src/ 下的所有后缀是c的文件,和S文件全部展开。也就是OBJSss变量此时为全部相应的.c 和.S文件了(这里大家注意了这里用的是大S,大S好看一些吗?不是那是.S是支持gnu的汇编语法的文件,.s是只支持标准汇编的语法的文件)

好下面就是字符串的替换了工作了

OBJSs:将OBJSss中的.S文件带路径的替换成 .o文件,此时这个时候,OBJSs中只用.c和.o 了。

OBJS将OBJSs中还没有替换掉的.c文件也替换成.o文件。

现在再明白了吧,可是还没有完,做这些工作累死个人,就是仅仅的做字符串的替换?

*/

OBJSss := $(wildcard start/*.S) $(wildcard start/*.c)\  $(wildcard common/src/*.c) \

$(wildcard common/src/*.S) $(wildcard *.c)\ $(wildcard *.S)

OBJSs  := $(patsubst %.S,%.o,$(OBJSss))

OBJS    := $(patsubst %.c,%.o,$(OBJSs))

#=============================================================================================================#

/***上面全是做一些准备工作,下面才到了编译的时候了,让我们继续

all:是默认的终极目标,当我们执行make的时候,他就会去执行make all,当在整个Makefile中没有all的时候,一个目标标号就成了all(终极目标)

当执行all的时候,首先将clean,然后需要依赖文件$(OBJS),这里比如a.o

b.o c.o d.o,而在工程目录下,有a.c b.c c.s d.s ,然后这个时候当然是需要a.o了,发现在目标文件中去寻找a.S ,发现a.s不存在,发现存在a.c,便使用$(CC) $(CFLAGS) -c -o  a.o a.c  来编译来生成a.o了

*/

%.o: %.S

$(CC) $(CFLAGS) -c -o  $@ $<

%.o: %.c

$(CC) $(CFLAGS) -c -o  $@ $<

all:clean  $(OBJS)

相关阅读:

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python esp8266模块_ESP8266使用笔记之常用固件

开发板使用的是NodeMCU开发板&#xff1a;目录1.学习使用ESP8266官方的SDK1.1使用SDK提供的AT固件1.2使用SDK Build固件2.学习使用NodeMCU固件(上层可使用Lua开发)和MicroPython固件(上层可使用MicroPython开发)学习使用ESP8266官方的SDK使用AT固件&#xff1a;下载开发包&…

基础C#总结

由于在学习c#这段视频是为了辅助设计模式的学习,这部分的内容也和VB的内容很大程度上是一样的.虽然在开始的 时候,有些困难.在接触了一些例子和实验后.理解起来变得顺畅了很多.下面是对c#基础内容的总结.很多内容都在VB中有 过接触,所以都是些基础知识.捋一捋,将这些时间脑子的…

e站app改内置hosts_米家踢脚线电暖器E评测:符合现代家居审美 全屋取暖“小钢炮”...

【科技犬】对于没有集中供暖的长江中下游地区居民而言&#xff0c;电暖器是不折不扣的"保命神器"。而在深秋的北方&#xff0c;昼夜温差较大&#xff0c;这种时候使用灵活、易于搬运的电暖器也成为更加明智的选择。在北方每年的冬季&#xff0c;室内温度就直接关系着…

asterisk libxml2

asterisk 在configure的时候&#xff0c;会去/usr/bin下检查有没有xml2-config这个可执行文件&#xff0c;还回去检查 编译的工具链中有没有libxml2.so这个库文件&#xff0c;即使是交叉编译&#xff0c;/usr/bin下应该也是上位机的xml2-config 而且xml2-config和libxml2.so的…

锐炬显卡可以linux吗,Intel Broadwell桌面CPU性能测试:Iris Pro 6200核显无敌了

Intel已经在Computex 2015发布了Broadwell-H桌面版处理器&#xff0c;分别有Core i7-5775C和Core i5-5765C两款&#xff0c;另有3款BGA封装的嵌入式型号。它们的特色是内置Intel史上最强Iris Pro 6200核显、以及较大的超频空间。这款处理器现在已经解禁&#xff0c;发布了评测&…

经纬度转化为xy坐标系_Arcgis添加经纬度矢量点

今天帮舍友作图&#xff0c;才体会到九边说的。学技术使人清醒&#xff0c;清醒的认识自己能力有限。少去网上怨天怨地&#xff0c;踏踏实实去提升实力。这是她给我的原始数据&#xff0c;一堆经纬度点。首先我们先进行数据去重&#xff0c;当然这一步可以根据自己数据考虑是否…

CSS中class优先级问题

CSS中class样式的优先级&#xff08;或者层叠效果&#xff09;是根据class在<style>或者css文件中定义的顺序比较&#xff0c;而不是根据class应用的顺序&#xff0c;定义越靠后优先级越高&#xff1b;如 <html> <style>.class1{color:red;}.class2{color:bl…

惊群现象

引用&#xff1a;http://www.cppblog.com/isware/archive/2011/07/20/151470.aspx-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------“据说”…

物联网课程学习目标_学习攻略|软件工程统计方法amp;amp;物联网

软件工程统计方法&&物联网任课老师&#xff1a;余松森&#xff0c;葛红课程特点及困难本课程的主要内容涉及统计机器学习方法&#xff0c;以及如何采用Python进行应用实现。同学们在学习中主要遇到以下问题&#xff1a;1、在课程内容方面&#xff0c;课本上的关于pytho…

笨办法学linux dhcp,iptables使用指南(上)

iptables-save用来把当前的规则存入一个文件里以备iptables-restore使用。它的使用很简单&#xff0c;只有两个参数&#xff1a;iptables-save [-c] [-t table]参数-c的作用是保存包和字节计数器的值。这可以使我们在重启防火墙后不丢失对包和字节的统计。带-c参数的iptables-s…

tdk怎么设置_你真的做好网站的标题、描述、关键词(TDK)设置了吗?

SEO其实是个苦活累活&#xff0c;大部分的工作都是在每日不断的坚持与重复。当然也是个细致活&#xff0c;很多的工作都是对一些细节问题的处理。可能平时你没留意到的地方&#xff0c;就是你的网站数据没能上来的原因。比如说SEO的基础设置&#xff1a;TDK。说到TDK(标题、描述…

流言终结者——C语言内存管理

写在前头&#xff1a; 我不能保证此文中&#xff0c;我的观点和理解全是对的&#xff0c;这也不是一篇教学贴&#xff0c;只是我偶尔突发奇想了几个特殊的场景&#xff0c;然后用实验得到结果&#xff0c;对结果进行分析&#xff0c;遂成此文。所以文中肯定存在错误&#xff0c…

mediastreamer2 的简介

原文&#xff1a;http://www.linphone.org/eng/documentation/dev/mediastreamer2.htmlMediastreamer2 是一个功能强大且小巧的流引擎&#xff0c;专门为音视频电话应用而开发。这个库为linphone中所有的接收、发送多媒体流提供处理&#xff0c;包括音/视频捕获&#xff0c;编码…

C# 监控字段_监控交换机选择:千兆/百兆/核心/PoE/光纤交换机选型指南

我们就交换机选型时的四个主要方面讲一下。01选择千兆还是百兆&#xff1f;视频监控系统的网络中&#xff0c;需要传输大量、持续的视频数据&#xff0c;这就要求交换机具有稳定转发数据的能力。交换机接入的摄像头数量越多&#xff0c;流经该交换机的数据量就会越大。我们可以…

python 头条 上传_Python+selenium自动化之文件上传

邮箱的主要功能就是邮件消息的收发阅读&#xff0c;之前的文章写了邮件的查收和编写&#xff0c;本篇介绍邮件的附件上传。还是以腾讯企业邮箱为例&#xff0c;进行实际案例操作。文件上传的实现大体分为两种&#xff0c;一种是input标签&#xff0c;一种非input标签。腾讯企业…

JAVA学习笔记——JAVA基础语法之精华

一、标识符 概念&#xff1a;JAVA里面我们可以给他取名字的&#xff08;变量、类、方法等等&#xff09;就是标识符&#xff1a; 注意&#xff1a;1、标识符只能包含字母、数字、下划线还有美元符号$ 2、只能以字母、下划线和美元符号开头 二、变量 概念&#xff1a;JAVA中储存…

编译mediastreamer2/ffmpeg/linphone(x86平台)

--------------------------在x86环境下编译mediastreamer2的步骤--------------------------------------1&#xff09;编译OGG库 音频编解码 http://www.xiph.org/downloads/ ./configure --prefix/usr --disable-static 2&#xff09;编译SPEEX 音频编解码./configure -…

c语言 行程长度编码,C语言编程题,求大佬帮助,关于数组的。

满意答案6kidf3xhs2017.11.07采纳率&#xff1a;41% 等级&#xff1a;8已帮助&#xff1a;62人2 个关键&#xff1a;2位数字的随机数&#xff1a; a[i] 10 rand() % 90;10位或个位 含5 的 并高于平均值的 数&#xff1a;if (a[i]>ave && ( a[i]%50 || (a[i]/10)…

python多级字典嵌套_使用pythonscsv DictReader创建多级嵌套字典

完全是Python noob&#xff0c;可能遗漏了一些明显的东西。我到处找遍了&#xff0c;还没有找到解决办法&#xff0c;所以我想我应该寻求一些帮助。在我正在尝试编写一个函数&#xff0c;它将从一个大的csv文件构建一个嵌套字典。输入文件的格式如下&#xff1a;Product,Price,…

wpf学习笔记二 深入学习 xaml

1、XAML 主要用于绘制UI界面&#xff0c;最大的优点是能使UI与运行逻辑分离开来&#xff0c;使得整个程序回到逻辑处理上来。 每一个标签对应.NET Framework类库的一个控件类。通过设置标签的Attribute&#xff0c;不仅可以对标签所对应的控件 对象Property进行赋值&#xf…