交叉工具链:
arm-linux-gcc:交叉编译器
arm-linux-ld:交叉连接器
arm-linux-readelf:交叉ELF文件工具
arm-linux-objdump:交叉反汇编器
arm-linux-objcopy:交叉转换器
-a 是显示该文件的信息
-O bfdname 输出的格式
-F bfdname 同时指明源文件,目的文件的格式
-R sectionname 从输出文件中删除掉所有名为sectionname的段
-S 尽可能反汇编出源代码
-D 显示文件中所有汇编信息,反汇编
-c 只编译不链接
-g 附加调试信息:C和汇编能对应起来
-T跟上链接器脚本文件 可参考这篇博客:http://man.linuxde.net/objdump
arm-linux-readelf -d hello 查看这个应用程序需要那些库
file 这个文件,可以看到这个文件在什么平台上运行(x86或者ARM等等)
arm-linux-objdump:反汇编工具
arm-linux-objcopy -O binary led.elf led.bin:-O是指定输出什么格式的文件,是binary(二进制),后面跟上输入文件和输出文件
makefile:make工作主要依赖于一个叫做Makefile的文件,这个文件描述了整个程序的编译、连接等规则。其中包括:那些源文件需要编译以及如何编译,如何最后产生我们想要的执行文件。
目标:依赖
命令
all: led.o
arm-linux-ld -Tled.lds -o led.elf led.o
arm-linux-objcopy -O binary led.elf led.bin
led.o : led.S
arm-linux-gcc -g -o led.o -c led.S
.PHONY: clean
clean:
rm *.o led.elf led.bin
make 后面跟 你想要的那个文件,就会去执行makefile里的只生成你需要文件的命令
make后面不接,就执行makefile里的第一条命令,所以称第一条规则里的就是最终目标
去回显
make -f file
all: start.o main.o mmu.o led.o button.o interrupt.o
arm-linux-ld -Tgboot.lds -o gboot.elf $^
arm-linux-objcopy -O binary gboot.elf gboot.bin
%.o : %.S
arm-linux-gcc -g -c $^
%.o : %.c
arm-linux-gcc -g -c $^
.PHONY: clean
clean:
rm *.o *.elf *.bin