您的位置:首页 > 其它

嵌入式程序开发的环境

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:

<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: