嵌入式程序开发的环境
2016-02-29 14:45
232 查看
感谢韦东山老师!!!
1.在windows在开发程序用vc进 行编辑→编译→执行。
2.在linux开发程序用gcc进行编辑→编译→执行。
不同的操作平台嵌入式开发的区别:
1.在windows系统下使用ADS进行开发
2.在windows系统下使用arm-linux-gcc
在linux中链接地址和链接顺序通过一个链接脚本(.lds)写入makefile中进行编译
脚本文件led.lds:
makefile:
windows下的编译只要按按钮就可以了,而在linux操作系统下需要用命令行,一条一条命令输入是非常大的工程,所以把这些命令写入一个文件,然后执行这个文件,就能编译。这就是makefile。
makefile规则:
目标:依赖1 依赖2(多个依赖中间+空格)
命令(前面是一个TAB)
举例:
hello:hello.c a.c
gcc -o hello hello.c a.c 注意 makefile命令能被执行有两个条件:1.目标不存在 2.依赖已更新
// gcc -o hello -c hello.c -c就是只编译不链接
可以写成通配符方式==也就是简化
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
如一个目录下有如下文件:
$ ls
hello.c hi.c main.c Makefile
按照 Makefile 规则规规矩矩的写:
main: main.o hello.o hi.o
gcc -o main main.o hello.o hi.o
main.o: main.c
cc -c main.c
hello.o: hello.c
cc -c hello.c
hi.o: hi.c
cc -c hi.c
clean:
rm *.o
rm main
改为用上述符号进行替代:
main: main.o hello.o hi.o
gcc -o $@ $^
main.o: main.c
cc -c $<
hello.o: hello.c
cc -c $<
hi.o: hi.c
cc -c $<
clean:
rm *.o
rm main
1.在windows在开发程序用vc进 行编辑→编译→执行。
2.在linux开发程序用gcc进行编辑→编译→执行。
不同的操作平台嵌入式开发的区别:
1.在windows系统下使用ADS进行开发
2.在windows系统下使用arm-linux-gcc
在linux中链接地址和链接顺序通过一个链接脚本(.lds)写入makefile中进行编译
脚本文件led.lds:
<span style="font-size:18px;"><span style="font-size:18px;">SECTIONS { . = 0x00;//当前地址为0,从0地址开始排放 .text : { *(.text) }//代码段 *代表所有文件 .rodata ALIGN(4) : {*(.rodata)} //只读数据段 .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.bss) *(COMMON) } }//这段指定了链接地址</span></span>
makefile:
<span style="font-size:18px;">CFLAGS := -Wall -Wstrict-prototypes -g -fomit-frame-pointer -ffreestanding all : crt0.S leds.c arm-linux-gcc $(CFLAGS) -c -o crt0.o crt0.S arm-linux-gcc $(CFLAGS) -c -o leds.o leds.c arm-linux-ld -Tleds.lds crt0.o leds.o -o leds_elf/*这条语句指定了链接顺序 crt0.o代码段→led.o代码段→crt0.o只读数据段→leds.o只读数据段 arm-linux-objcopy -O binary -S leds_elf leds.bin arm-linux-objdump -D -m arm leds_elf > leds.dis clean: rm -f leds.dis leds.bin leds_elf *.o </span>makefile讲解:
windows下的编译只要按按钮就可以了,而在linux操作系统下需要用命令行,一条一条命令输入是非常大的工程,所以把这些命令写入一个文件,然后执行这个文件,就能编译。这就是makefile。
makefile规则:
目标:依赖1 依赖2(多个依赖中间+空格)
命令(前面是一个TAB)
举例:
hello:hello.c a.c
gcc -o hello hello.c a.c 注意 makefile命令能被执行有两个条件:1.目标不存在 2.依赖已更新
// gcc -o hello -c hello.c -c就是只编译不链接
可以写成通配符方式==也就是简化
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
如一个目录下有如下文件:
$ ls
hello.c hi.c main.c Makefile
按照 Makefile 规则规规矩矩的写:
main: main.o hello.o hi.o
gcc -o main main.o hello.o hi.o
main.o: main.c
cc -c main.c
hello.o: hello.c
cc -c hello.c
hi.o: hi.c
cc -c hi.c
clean:
rm *.o
rm main
改为用上述符号进行替代:
main: main.o hello.o hi.o
gcc -o $@ $^
main.o: main.c
cc -c $<
hello.o: hello.c
cc -c $<
hi.o: hi.c
cc -c $<
clean:
rm *.o
rm main
相关文章推荐
- Linq like
- UFLDL教程之五:Softmax 回归
- Centos 6.3 64位安装cx_Oracle
- redis的使用场景(小场景)
- (二)JavaMail 发送邮件之仅包含正文
- Python基础
- ubuntu获得root用户权限,使用xshell连接!
- cookie的设置,获取,取消
- 2016-02-29 不能真机调试的问题
- Node.js 手册查询-4-Express 方法
- 安装新版Django
- azure 机器学习算法分类
- 锤子坚果手机(YQ601)换屏过程分享
- usb热插拔的来龙去脉
- 算法导论第三版习题7.3
- sublime 使用技巧
- 微服务
- win7下IE11开发者工具无法使用
- FFmpeg源代码简单分析——sws_getContext()
- Android应用中内嵌SQLite数据库的基本操作指南