嵌入式交叉开发模型概念
在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。
常用交叉工具
arm-linux-gcc
- gcc是在/usr/include/找头文件的
arm-linux-gcc –help==》
然后执行arm-linux-gcc -printf-search-dirs用于查看这个软件的依靠目录 - aem-linux-gcc -g -c led.S 生成led.o(-c只编译不连接)
arm-linux-ld
1.arm-linux-ld -Tled.lds -o led.elf led1.o led2.o
arm-linux-ld -T(链接器脚本) -o (输出文件名) (依赖文件)
arm-linux-readelf
- 执行arm-linux-readelf -a led.elf
可以得到程序的大小端信息和运行的平台
- 查看程序运行依赖的库,执行arm-linux-readelf -d hello.c
- 总结:程序不能运行可能有三个原因:
1.运行平台不对。
2.程序大小端不对
3.程序运行依赖的库没有
arm-linux-objdump(反汇编器)
- arm-linux-objdump -D -S hello >dump
-D:显示所有对应的汇编代码
-S:源代码和汇编代码一一对应显示,前提是编译的时候带上 -g,即arm-linux-gcc -g hello.c -o hello
>dump
:输出到dump中,因为有时候生成的汇编代码太多
arm-linux-objcopy
arm-linux-objcopy -O binary led.elf len.bin生成二进制
-O:输出文件格式后面加binary就是二进制