第1课 嵌入式Linux开发环境搭建及使用,嵌入式变成基础知识
1. 安装ubuntu
按教程来安装:书、配套的开发板光盘使用手册都有说明
使用光盘上已经制作好的ubuntu9.10
2. 安装Windows下的配套开发工具
源码编辑查看源码工具Source Insight
远程登录/串口工具SecureCRT
文件传输工具CuteFTP
tftp服务器程序tftpboot: uboot上的tft
3. Linux操作示例
启动终端、远程登录
vi.gedit: vi的使用可以在google上搜
ifconfig 查看ip配置
sudo ifconfig eth1 192.168.1.3 //设置网卡
sudo ifconfig eth1 up //设置网卡
ping windows ip,ping 192.168.1.7
find、grep
查找名为a.c的文件:find -name “a.c”
在当前目录下搜含有abc字样的文件:grep “abc” * -nR
cd change dir改变目录
cd /到根目录
cd /
rm删除命令
rm ab.c删除文件
rm -rf dir_name删除目录
mkdir abcd穿件目录
ls 列出当前目录所有文件及目录
rm -rf abcd递归删除强制删除所有目录及目录下所有子目录
gcc -o hello hello.c a.c
./hello ./指的是在当前目录下执行
SECTIONS {
. = 0x00; //当前地址为零,从零地址开始排放,排放代码段,只读数据段,data,bss
.text : { *(.text) }
.rodata ALIGN(4) : {*(.rodata)}
.data ALIGN(4) : { *(.data) }
.bss ALIGN(4) : { *(.bss) *(COMMON) }
}
lds文件指定了链接脚本,但是没指定链接顺序,Makedfile里制定链接顺序
*表示所有文件,这里说的所有文件是指在当前目录的源文件
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后leds.0
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
所以先排放crt0的text再排放leds的text依次排放。
理解设么是Makefile
Windows 编译 按钮
Linux 命令行,为了方便,这些命令写入一个文件,然后执行这些文件,Makefile
Makefile 规则
目标:依赖1 依赖2 。。。。
TAB 命令
hello:hello.c a.c
gcc -o hello hello.c a.c
Makefile命令能被执行的条件
hello 没有这个文件
hello.c或者a.c更新了或被修改了
vi Makefile编辑 Makefile
make执行Makefile
改良Makefile 使编译和链接分离
hello : hello.o a.o //想生成hello,但是没有hello.o也没有a.o, 查找关于hello.o 和 a.o的规则
gcc -o hello hello.o a.o
hello.o : hello.c
gcc -o hello.o -c hello.c // -c 编译不链接
a.o : a.c
gcc -o a.o -c a.c
这种情况下哪个文件改变了就编译哪个文件,节省编译时间。
Makefile 还可以改进写成通配符
hello : hello.o a.o
gcc -o $@ $^
%.o : %.c
gcc -o $@ -c $<
clean :
rm *.o hello
make clean可以删除相关的所有的东西
介绍gcc命令选项
-c 编译不链接
ld, arm-linux-ld