码迷,mamicode.com
首页 > 其他好文 > 详细

嵌入式基础知识

时间:2016-04-06 22:59:53      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

================ 内存管理 ===============
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 $@

 

嵌入式基础知识

标签:

原文地址:http://www.cnblogs.com/ChuckYin/p/5361262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!