arm-linux-gcc的使用

1.arm-linux-gcc编译器:
1)预处理:将C和汇编源程序进行预处理,生成“.i”目标文件
arm-linux-gcc -E -o *.i *.c/*.S


2)编译:将“.i”目标文件编译生成“.s”汇编文件
arm-linux-gcc -S -o *.s *.c


3) 汇编:将编译得到的“.s”汇编文件按照给定的指令集转换成符合一定格式的机器码
arm-linux-gcc -c -o *.o  *.c/*.s/*.S


4) 链接:将汇编生成的目标文件和系统库的目标文件、库文件组装起来,最终生成可以在特定处理器平台运行的可执行文件
arm-linux-gcc -o  *.c/*.s/*.S(默认生成的目标名字为“a.out”ELF格式)

其他):①-v 显示出arm-linux-gcc编译器的配置信息,同时还会在显示编译过程的详细信息
②-g 在最后生成的可执行程序中加上调试信息
③-Wall 打开所有需要注意的警告信息
④-Ox 优化等级,(-O0 不进行优化,-O1一级优化,-O2 二级优化,-O3 最高级优化),优化等级越高,代码效率越高,但编译时间越长,推荐优化等级为2。

2.arm-linux-gcc编译器的工具:
①链接器 arm-linux-ld:
-static 阻止支持动态链接的系统上链接共享库;
-nostdlib 使编译器不链接系统标准启动文件和标准库文件,只把指定的文件传递为链接器,一般用在内核、BootLoader等
-T “-T”选项可以用于指示链接器将“.text section”、“.data section”、“.bss section”放置在特定的起始地址。命令格式如下:
arm-linux-ld -Ttext startaddress
arm-linux-ld -Tdata startaddress
arm-linux-ld -Tbss startaddress


②格式转换工具 arm-linux-objcopy:
ELF格式的可执行文件无法再ARM裸机平台执行;
将编译生成的ELF格式的可执行程序转换成能被处理器执行的二进制文件;
-O 指定输入输出文件的格式;
-S 不将输入文件中的符号信息和重定位信息复制到输出文件中;
-g 不把输入文件中的调试信息复制到输出文件中;


③反汇编工具 arm-linux-objdump
-b 指定目标码格式;
-d 将输入文件的可执行段反汇编;
-D 将输入文件的所有段反汇编;
-EB 指定输出文件字节序为大端格式;
-EL 指定输出文件字节序为小端格式;
-f 显示文件的整体头部信息;
-i或-info 显示支持的目标文件格式和CPU架构。

猜你喜欢

转载自blog.csdn.net/haihui1996/article/details/78036596