ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

gcc常用的编译选项

2022-06-07 11:35:13  阅读:203  来源: 互联网

标签:选项 汇编 gcc demo elf 编译 include


1、gcc概述
GNU计划提供的编译器。(在unix系统中,则是cc编译器)

2、由源文件到可执行文件需要经历的步骤
预处理:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef)
(预处理阶段处理的都是以#开头的代码)
编译:检查语法、转成汇编、生成汇编文件(.s/.S)
汇编:编译汇编文件,生成目标文件(.o)
链接:链接所有目标文件,生成符号表,生成可执行文件(elf)
(elf即可执行连接文件格式,elf文件参与程序的连接和执行,即参与建立一个程序和执行一个程序的过程)
3、 交叉编译
在宿主机下编程出在目标机下运行的代码的过程,这就是交叉编译。(首先需下载交叉编译器)
(即在当前cpu平台编译出在其他cpu平台运行的代码的过程)

4、编译选项
(1)-o:可执行文件重命名(elf格式)

(2)-E:只进行预处理
gcc -E demo.c > demo.i :将预处理信息放到.i文件中

(3)-S:进行编译阶段

(4)-c:进行汇编阶段

(5)-O1 -O2 -O3:编译优化
gcc -O1 demo.c -o demo :一级优化
gcc -O2 demo.c -o demo :二级优化
gcc -O3 demo.c -o demo :三级优化
(time ./demo:可以测算代码运行的时间)

(6)-w:关闭警告
gcc -w demo.c -o demo
(不推荐使用,警告可能不影响程序的执行,但忽视警告运行时可能会造成程序上的一些问题)

(7)-Wall:开启所有警告

(8)-I+路径:指定头文件的第三方搜索路径

include “stdio.h"和#include <stdio.h>的区别:搜索路径不同

<>:在系统头文件目录(/usr/include)中搜索,若没有,则报错
“”:先在当前目录中搜索,若没有,则去系统头文件目录中搜索,若还没有,在报错
规范:<> :包含系统头文件 “”:包含自定义文件
(”"虽然方便,但是大体量代码,仍需注意规范,提高编译效率)

补充:代码注释的方法
(1)/* */
(2)#if0…#endif :注释 #if1…#endif:解开注释
————————————————
版权声明:本文为CSDN博主「绉绫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45304885/article/details/122338724
参考:https://wenku.baidu.com/view/ce4f5ecf49fe04a1b0717fd5360cba1aa8118c76.html

标签:选项,汇编,gcc,demo,elf,编译,include
来源: https://www.cnblogs.com/sggggr/p/16351120.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有