all:
#
arm-linux-gcc -c -o led_on.o led_on.S
arm-linux-ld -Ttext 0 led_on.o -o led_on.elf
arm-linux-objcopy -O binary -S led_on.elf led_on.bin
arm-linux-objdump -D led_on.elf > led_on.dis
clean:
rm *.bin *.o *.elf
统一使用选项:–help来打印帮助文档
arm-linux-gcc
-
-v
查看gcc编译器的版本,显示gcc执行时的详细过程 -
-E
只预处理,预处理后的文件是 .i 类型 -
-S
只编译,编译后的文件是 .s 类型 -
-c
编译和汇编,不会链接,生成 .o 文件 -
-o filename
-指定输出的文件,arm-linux-gcc -o example example.c
输出文件名为example,如果不指定输出文件,则默认输出a.out
举例:
gcc -E -o hello.i hello.c
gcc -S -o hello.s hello.i
gcc -c -o hello.o hello.s
gcc -o hello hello.o
- -g
加入GDB能够使用的调试信息,使用GDB调试时比较方便。 - arm-linux-gcc -Wall -o example example.c
-Wall选项打开了所有需要注意的警告信息,像在声明之前就使用的函数,声明后却没有使用的变量等。
arm-linux-ld
- -Ttext/Tdata/Tbss ADDRESS
设置.text/.data/.bss的地址 - -o FILE, --output FILE Set output file name
设置输出文件名
arm-linux-objcopy
一般用于将 .elf 转换成 .bin
- -S --strip-all
删除所有符号和重定位信息 - -O binary --output-target-binary
创建一个binary输出文件格式
arm-linux-objdump
- -d --disassemble 打印可执行段的反汇编码
- -D --disassemble-all 打印所有段的反汇编码