led.bin : leds.s // led.bin 依赖 leds.s 文件
1. arm-linux-gnueabihf-gcc 编译文件
arm-linux-gnueabihf-gcc -g -c leds.s -o led.o //将led.s 文件;链接成 led.o 文件
//上述命令就是将 leds.s 编译为 led.o ,其中“-g” 选项是产生调试信息,GDB能够使用这调试信息进行代码调试,“-c” 选项是编译源文件,但是不链接。“-o” 选项是指定编译产生的文件名字,这里我们指定leds.s 编译完成以后的文件名字为 led.o
2. arm-linux-gnueabihf-ld 链接文件,用来将众多的 .o 文件链接到指定的链接位置
arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
// 将led.o 文件链接到0x87800000这个地址,“-o” 选项指定链接生成的文件名,这里我们命名为led.dlf
3. arm-linux-gnueabihf-objcopy 格式转换,像一个格式转换工具,我们需要用它将led.elf 文件转换为led.bin 文件
arm-linux-gnueabihf-obj copy -o binary -S -g led.elf led.bin // 转换成 bin 文件
“-O” 选项指定以什么格式输出,后面的“binary” 表示以二进制格式输出,选项“-S” 表示不要复制源文件中指定的重定位信息和字符信息,“g” 表示不复制源文件中的调试信息
4.arm-linux-gnueabihf-objdump 反汇编
arm-linux-guneabihf-objdump -D led.elf > led.dis // 反汇编
“-D” 选项表示反汇编所有的段
clean:
rm -rf *.o led.bin led.elf led.dis