• gcc常用的编译选项


    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

  • 相关阅读:
    中介者模式
    观察者模式
    javascript深入理解js闭包
    外观模式
    模板方法模式
    浅析C#深拷贝与浅拷贝
    C#浅拷贝与深拷贝区别
    6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
    原型模式
    设计模式总结
  • 原文地址:https://www.cnblogs.com/sggggr/p/16351120.html
Copyright © 2020-2023  润新知