zoukankan      html  css  js  c++  java
  • gcc and g++ 常用参数解释

    程序编译运行的过程

    1. 预处理。处理一些#include,#define命令,生成.i或者.ii文件;
    2. 编译。编译器进行语法分析,语义分析,中间代码生成,目标代码生成,优化,生成.s文件
    3. 汇编。汇编器把汇编代码翻译成机器码,生成.o文件
    4. 链接。链接器进行地址和空间分配,符号决议,重定位,生成.out文件。

    编译器编译源代码后生成的文件叫做目标文件。目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整。

    gcc和g++的区别

    都是GNU组织的编译器
    不同点 :

    1. gcc处理.c文件是以c语言为标准,而g++都是以c++为标准。二者的标准并不通用。
    2. gcc在链接c++程序的过程中,不能自动连接c++程序所使用的库,必须加上-lstdc++。
    3. 编译阶段,g++会调用gcc来进行编译。

    常用参数的解释

    1. 无选项。默认4个步骤全部执行,直接生成可执行文件,默认为a.out

    gcc test.c

    1. -o,链接。

    gcc test.o -o test

    1. -c, 只执行前三个步骤,生成obj文件

    gcc -c test.c

    1. -S,只执行前两个步骤,生成汇编代码,生成.s文件

    gcc -S test.c

    1. -E, 只执行第一个步骤,需要指定一个重定向的输出文件,或者直接生成.i文件

    gcc -E test.c > test.log
    gcc -E test.c | more

    1. -include file。指定包含的文件
    2. -C 在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的。(暂时没用到)
    3. -O0;-O1;-O2;-O3.优化级别,O0无优化,O3优化最多,但是时间消耗也多。
    4. -g,在编译的时候,产生调试信息。
    5. -share, 编译动态库。
    6. -w,不产生警告信息
    7. -Wall,打印所有警告信息
    8. -std=Cxx,指定编译的C版本
  • 相关阅读:
    怎么把创业的风险降到最低
    反思:创业一开始并不需要重量级的产品
    口头承诺不如白纸黑字 技术大牛曹政(前4399核心员工)期权被坑的那些事
    idea配置tomcat去启动web项目
    Closeable释放资源
    Spring的SchedulingConfigurer实现定时任务
    thymeleaf js绑定多个变量参数
    Mysql concat() group_concat()用法
    枚举
    lambda之美
  • 原文地址:https://www.cnblogs.com/whutao/p/10684140.html
Copyright © 2011-2022 走看看