gcc编译选项说明

关于gcc编译符号说明:
1、预处理:以#开头的开头的命令称为预处理命令,
1.1 包括"#include"宏定义"#define" 条件编译 "#if" "#ifdef"
1.2 预处理就是将include的文件插入原文中,将宏定义展开,根据条件
编译选择要执行的代码,最后将代码输出到一个.i文件,等待进一步处理。
1.3 预处理后c文件为.i,c++文件为.ii
1.4 预处理用到的工具是 arm-linux-cpp
1.5 -E

2、编译
2.1 把c/c++代码(比如上述.i文件)翻译成汇编代码
2.2 用到的工具为ccl(不是arm-linux-ccl)
2.3 -S


3、汇编
3.1 汇编就是将第二步输出的汇编代码翻译成机器码
3.2 linux系统上一般表现为ELF目标文件(obj文件)
3.3 用到的工具为arm-linux-as
3.4 -c


4、链接
4.1 链接就是将上步生成的obj文件和系统库的obj文件链接起来,
最终生成可以在特定平台上执行的文件
4.2 用到的工具为arm-linux-ld
4.3 -o 指定文件输出名
4.4 -L指定链接的路径
4.5 -l指定要链接哪些库文件
4.6 -v查看链接过程 
4.7 -nostdlib



5、 直接指定代码段,数据段,bss段的起始地址
-Ttext startaddr
-Tdata startaddr
-Tbss startaddr


6、使用链接脚本设置链接地址


7、arm-linux-objcopy
将ELF格式文件转换成二进制文件

8、arm-linux-obdump
用于查看反汇编






























































猜你喜欢

转载自blog.csdn.net/amumu_123/article/details/78415245