嵌入式基础知识

================ 内存管理 ===============
1.从地地址到高地址依次为:代码区、数据区、堆区、栈区、命令行参数及环境变量区域

2.
局部变量:局部变量位于栈区

栈区特点: 1.栈区当中变量未初始化之前都为随机值
2.在变量作用域结束后,变量空间被操作系统收回

全局变量:全局变量位于数据区

数据区特点:
1.数据区中变量未初始化之前都是0
2.在程序结束后,变量空间被操作系统收回

静态变量:静态变量位于数据区
特点:
1.数据区中变量未初始化之前都是0
2.在静态变量作用域结束后,并不会被操作系统收回变量空间
3.静态变量也是有作用域的,虽然静态变量在作用域结束后没有被操作系统回收变 量空间但在作用域外扔无法操作该静态变量

常量:常量位于数据区

数据区分为:
1.文字常量区 存放字符串常量
2.未初始化的静态变量区 存放未初始化化的静态变量 .bss
3.已初始化的静态变量区 存放已经初始化的静态变量 .rodata


1.堆区:程序员通过malloc函数获得的一片区域

2.注意:程序通过malloc获得堆区空间后,在程序结束时必须要free掉堆区空间否则将导致内存泄漏
malloc
free

 

========================== Makefile ======================
1.GNU推出的一款软件

2.在project文件中,在命令行下输入make,操作系统会自动寻找当前目录的下的makefile,按照makefile规则去编译project下的相关文件


3.基本形式:
main:main.o fun1.o fun.o gcc main.o fun1.o fun.o -o main
main.o:main.c
gcc -c main.c -o main.o
fun1.o:fun1.c
gcc -c fun1.c -o fun1.o
fun.o:fun.c
gcc -c fun.c -o fun.o


4.makefile变量
OBJS = main.o add.o
OBJ = main
CC = gcc
使用变量用$(OBJS)
$(OBJS)
$(CC)

5.自动变量
$@ 目标文件的完整名称
$< 第一个依赖文件的名称
$^ 所有的不重复的目标依赖文件,以空格隔开
方式一:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main:main.o fun1.o fun.o
gcc main.o fun1.o fun.o -o main
main.o:main.c
gcc -c main.c -o main.o
fun1.o:fun1.c
gcc -c fun1.c -o fun1.o
fun.o:fun.c
gcc -c fun.c -o fun.o

.PHONY:
clean:
rm *.o main


方式二:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main.o:main.c
$(CC) -c $< -o $@
fun1.o:fun1.c
$(CC) -c $< -o $@
fun.o:fun.c
$(CC) -c $< -o $@

.PHONY:
clean:
rm *.o main


方式三:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
%.o:%.c
$(CC) -c $^ -o $@

 

转载于:https://www.cnblogs.com/ChuckYin/p/5361262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值