
Makefile
猪哥-嵌入式
这个作者很懒,什么都没留下…
展开
-
Makefile 中的 “=”,“:=”,“?=”,“+=”的区别
转自:http://blog.youkuaiyun.com/liuxd3000/article/details/17679937在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq (转载 2017-12-20 21:55:39 · 448 阅读 · 0 评论 -
Makefile学习之 all
Makefile中本身是没有 all 指令的,这里只不过是一种约定,认为目标 all 可以同时做很多事儿,也就能能同时生成多个目标,举例1-代码如下:/*-------------- main1.c -----------------*/#include <stdio.h>int main( void ){ printf("main1 task!\n");...原创 2019-03-17 21:21:21 · 14430 阅读 · 0 评论 -
Makefile中常用函数使用
该篇文章引用了 陈皓老师的《跟我一起写Makefile》,博客地址为:https://blog.youkuaiyun.com/haoel/article/details/2886Mkefile支持使用函数来处理变量,函数的返回值可以再赋值给新的变量,从而使得Makefile的命令、规则更加的灵活智能。一、函数调用的语法 函数的调用,类似于变量调用,以"$"来调用,语法如下: $(<...转载 2019-03-16 22:41:27 · 839 阅读 · 0 评论 -
Makefile的静态模式%.o : %.c
Makefile的静态模式是一个特别高效的“自动化”编译器,“静态”二字,我觉得是直译词意,可能是我不是真正理解什么叫静态,反正这个规则跟中国话的 “静态”没有半毛钱关系。 我们先说一种场景,我们在编写应用程序时,肯定不只有一个文件,会有n多个.C文件,.s文件,少则几十个,多则几千、几万个,我们在windows下写代码,是有各种IDE的,可以一键编译,但linux环境下,是看不上...原创 2019-03-16 17:09:05 · 22381 阅读 · 6 评论 -
Makefile中3个常用自动化变量
在Makefile,有三个常用也很好用的自动化变量:$@、$^、$<,所谓自动化变量是在模式规则中定义的一系列文件自动挨个的去除,直至所有的符合模式的文件都取完。这么说可能比较绕,我们可以简单直白的理解,我们写的应用程序,稍微简单的也要有几个文件(.c、.h等),那么复杂的可能有几百,几千,甚至几十万(kernel),我们在编写Makefile时,如果逐个文件去编译,链接,那是绝不可...原创 2019-03-16 11:54:58 · 2958 阅读 · 3 评论 -
make smdk2410_config 作用
uboot的配置命令“make smdk2410_config”。在Makefile中对应的对象代码为:smdk2410_config: unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 MKCONFIG为脚本函数,所以该配置命令实际的作用是执行如下代码:./mkconfig smdk2原创 2018-01-08 21:32:52 · 674 阅读 · 0 评论 -
Makefile 自动化变量及其说明
模式规则模式规则类似于普通规则。只是在模式规则中,目标名中需要包含有模式字符“%”(一个),包含有模式字符“%”的目标被用来匹配一个文件名,“%”可以匹配任何非空字符串。规则的依赖文件中同样可以使用“%”,依赖文件中模式字符“%”的取值情况由目标中的“%”来决定。例如:对于模式规则“%.o : %.c”,它表示的含义是:所有的.o文件依赖于对应的.c文件。有一点需要注意的是,"%"的展转载 2017-12-17 21:35:15 · 392 阅读 · 0 评论 -
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。转载 2017-12-30 21:29:02 · 327 阅读 · 0 评论 -
shell 中的 -eq -ne -gt -lt ge le
shell中的比较不是使用简单的> = -eq //equal 等于 -ne //no equal 不等于 -gt //great than 大于 -lt // low than 小于 ge // great and equal 大于等于,注意没有"-" le //low and equal 小于原创 2017-12-30 21:25:11 · 35737 阅读 · 2 评论 -
$(@:_config=)解释
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj = $(srcfiles:%.c=%.o):由.c得到对应的.o文件,这里是一样的道理: $(@:_config=) 其中@代表的是smdk2410_config,那么$(@:_config=)就是将smdk2410_config中的"_config"替换(=)成“空”(其实=后面是空),所以就得到了smd原创 2017-12-30 21:00:49 · 2524 阅读 · 0 评论 -
Makefile 书写规则
Makefile的书写规则有两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序很重要,因为Makefile中只应该有一个最终目标,其他的目标都是被这个目标所带出来的,所以一定要让make命令知道你的最终目标是什么。一般来说定义在Makefile中的目标可能有很多,但是第一条规则中的目标将会被确立为最终目标。如果第一条规则中的目标有很多个,那么,默认第一个目标会成为原创 2017-12-14 21:51:23 · 438 阅读 · 0 评论 -
make命令工作时执行的步骤
1.读入所有的Makefile2.读入被include 的其他 Makefile3.初始化文件中的变量。4.推导隐晦规则,并分析所有规则。5.为所有目标文件创建依赖关系链。6.根据依赖关系,决定哪些目标要重新生成。7.执行生成命令。原创 2017-12-14 21:32:10 · 3265 阅读 · 0 评论 -
make 命令的自动推导功能
make命令自动推导功能,或者说是默认推导功能,这也是make的强大之处,只要make看到一个.o文件,它就会自动把同名的.c文件加在依赖关系中,例如如果make找到一个hello.o,那么hello.c就会是hello.o的依赖关系,并且cc -c hello.c也会被推导出来,于是我们的makefile就再也不用写那么复杂了, 中规中矩的写法:main.o:main.c de原创 2017-12-13 22:06:00 · 741 阅读 · 0 评论 -
makefile中的变量
一个简单的例子:edit:main.o kbd.o command.o display.o \ insert.o search.o files.occ -o edit main.o kbd.o command.o display.o \ insert.o search.o files.o我们可以看到*.o文件的字符串被原创 2017-12-13 21:51:51 · 295 阅读 · 0 评论 -
makefile 规则之---make命令-编译,依赖关系
make命令的核心是找依赖性,make命令会一层又一层地区找文件的依赖关系,知道最终编译出目标文件,在找寻过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令错误,或者编译不成功,make根本不理,make只管文件的依赖性,即,没有依赖性,就不执行,所以像常见的clean命令,make不会自动执行, clean: rm *.o..原创 2017-12-13 21:40:32 · 4309 阅读 · 0 评论 -
Makefile简单规则--基本规则
makefile的简单规则如下:target :prerequisites.... command .....target是一个目标文件,可以是object file,也可以是执行文件,还可以是一个标签label。prerequisites:就是要生成那个target所需要的各种文件或者目标。command也就是make需要执行的命令--任意的she原创 2017-12-13 21:26:24 · 461 阅读 · 0 评论 -
libmodbus协议栈1——Linux下详细移植步骤(配置、生成)
libmodbus是一个免费的modbus协议栈,这个协议栈是跨平台的,也就是说既可以在Windows下以.dll库的提供方式,也可以在Unix/Linux下以.a/.so库的形式提供。一般在小型嵌入式硬件中,如果是非Linux系统或裸机,我们要实现设备modbus通信,要么使用freemodbus,要么是自己来写协议栈,这个工作量相对来讲还是比较多的,虽然现在freemodbus目前已经...原创 2019-04-10 16:08:23 · 6037 阅读 · 1 评论