韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解

作者:GWD 时间:2019.7.6

一、课程内容
1、本节课着重讲解:
1)、gcc和arm-linux-gcc的常用选项-V,-O,-E,-S,-C;
2)、介绍了3种.c文件变成可执行文件的步骤:
2、问:GCC的常用选项及其功能?
答:
gcc的使用方法:
gcc [选项] 文件名
-v:查看gcc编译器的版本,显示gcc执行时的详细过程
-o :Place the output into ,指定输出文件名为file,这个名称不能跟源文件名同名
-E:Preprocess only; do not compile, assemble or link,只预处理,不会编译、汇编、链接
-S:Compile only; do not assemble or link,只编译,不会汇编、链接
-c:Compile and assemble, but do not link,编译和汇编,不会链接

3、问:一个C/C++文件变成可执行文件的三种方法?
答:需要经过预处理、编译、汇编和连接等四步才可以变成一个可执行文件。
实验代码:hello程序并上传到linux虚拟机。
韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解_第1张图片
韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解_第2张图片
1)、方式1(不推荐):
gcc hello.c 输出一个a.out,然后./a.out来执行该应用程序。
韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解_第3张图片
gcc -o hello hello.c 输出hello,然后./hello来执行该应用程序。
韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解_第4张图片
2)、方式2:
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(连接)
在这里插入图片描述
韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解_第5张图片
.o:object file(OBJ文件)
小结:
1)、输入文件的后缀名和选项共同决定gcc到底执行那些操作。
2)、在编译过程中,除非使用了-E、-S、-c选项(或者编译出错阻止了完整的编译过程)
否则最后的步骤都是链接。

二:学习要点:
1、问:预处理、编译、汇编、连接分别有什么作用?
答:预处理是展开宏定义,以“#”开头的命令被称为预处理命令;编译是把C文件“翻译”成汇编代码;汇编是把上一步输出的汇编代码翻译成一定格式的机器码;连接是将上一步生成的OBJ文件和系统库OBJ文件连接起来。
三:代码:(无)

你可能感兴趣的:(韦东山嵌入式第一期学习笔记DAY_5——9_1gcc常用选项__gcc编译过程详解)