
Makefile
文章平均质量分 73
宁静以致墨
慢下来,享受技术,找一个安静的位置
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
makefile 学习笔记(二)
x = variable1 variable2 := Hello y = (subst1,2,(subst 1,2,(subst1,2,(x)) z = y a := (((($(z))) 最终,(a)的值就是(a)的值就是(a)的值就是(variable2)的值—— “Hello”。 a := (((($(z))) := ((((subst 1,2,$(x))) := ((((subst 1,2,variable1)) subst函数把“variable1”中的所有“1”字串替换成“2”字串 := (((原创 2021-09-23 09:09:39 · 408 阅读 · 0 评论 -
Makefile = := ?= +=这几个赋值运算符
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE VRE = “Hello World!” else endif ifeq ($(OPT),define) VRE ?= “Hello World! First!” endif ifeq ($(OPT),add) VRE += “Kelly!” endif ifeq ($(OPT),recover) VRE := “Hello转载 2021-09-16 14:54:18 · 382 阅读 · 0 评论 -
makefile 学习笔记(一)
edit : main.o kbd.o command.o display.o / insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o / insert.o search.o files.o utils.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c comma原创 2021-09-14 08:36:54 · 397 阅读 · 0 评论 -
初识 Makefile
三、在规则中使用通配符make支持三各通配符:“*”,“?”和“[...]”.波浪号(“~”)字符在文件名中也有比较特殊的用途。如果是“~/test”,这就表示当前用户的$HOME目录下的test目录.print: *.clpr -p $?touch print目标print依赖于所有的[.c]文件。其中的“$?”是一个自动化变量.Makefile中的变量其实就是C/C++中的宏。Makefile...转载 2018-04-23 15:06:30 · 250 阅读 · 0 评论 -
makefile中=和:=的区别
1、“=” make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子: x = foo y = $(x) bar x = xyz 在上例中,y的值将会是 xyz bar ,而不是 foo bar 。 2、“:=” ...转载 2018-05-15 13:45:40 · 3209 阅读 · 1 评论 -
程序的连接和编译过程
连接(linking)是将各种代码和数据片段收集并组合称为一个单一文件的过程, 这个文件可被加载(复制)到内存并执行。 在早期的计算机系统中,连接时手动执行的。在现代系统中,连接是由 叫做连接器(linker)的程序自动执行的。 main.c sum.c 大多数编译系统提供编译器驱动程序(compiler driver),它代表用户在 需要时调用语言预处理器、编译器、汇编器和连接器...原创 2019-06-14 11:40:06 · 958 阅读 · 0 评论 -
编译的目标文件解析
.data和.bss节之间区别的简单方法是把“bss”看成是“更好节省空间(Better Save Space)”缩写。 .bss 块储存开始(Block Storage Start) 夹在ELF头和节头部之间的都是节。一个典型的ELF可重定位目标文件包含下面 几个节: .text: 已编译程序的 机器代码。 .rodata: 只读数据,比如printf语句中的格式串和开关语句的跳转表。 ...原创 2019-06-17 09:37:29 · 360 阅读 · 0 评论