一、流程:
hello.c 预处理 hello.i 编译 hello.s 汇编 hello.o 链接 hello
二、具体过程
1、完成预编译
gcc -E hello.c -o hello.i
生成hello.i文件
2、gcc -S hello.i -o hello.s
编译生成hello.s汇编文件
3、gcc -c hello.s -o hello.o
经汇编生成hello.o二进制文件
4、gcc hello.o -o hello
可执行应用程序hello
三、GCC编译选项
1、-o可改变可执行程序的名字
gcc app.c -o app:将app.c生成的a.out改成app,这样子便于区分
2、-o -O -O2优化程度递增,但是编译速度很变慢
四、交叉工具链
1、学习使用
arm-linux-gcc 交叉编译器
arm-linux-ld 交叉链接器
arm-linux-readelf查看
arm-linux-objdump反汇编器
arm-linux-objcopy
2、arm-linux-gcc -g -c led.S只编译不链接
3、arm-linux-ld -Tled.lds -o led.elf led.o main.o使用链接器脚本
将多个.o文件链接成一个led.elf文件
4、arm-linux-readelf -a led.elf
查看led.elf所有内容
检查能否运行
arm-linux-gcc hello.c -o hello
flie hello
检查运行环境
arm-linux-readelf -d hello查看hello使用的库
5、
arm-linux-objdump -D -S hello >dump反汇编输出到dump
6、arm-linux-objcopy -O binary led.elf eld.bin
转化成二进制文件