zoukankan      html  css  js  c++  java
  • gcc/g++ 命令

    gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。
    g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。
    其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。

    下面来讲解g++命令的使用,测试代码:
    1. #include<iostream>
    2. usingnamespace std;
    3. intFactorialTail(int n,int sum)
    4. {
    5. if(n <0){return0;}
    6. elseif(n ==0){return1;}
    7. elseif(n ==1){return sum;}
    8. else{returnFactorialTail(n -1, n * sum);}
    9. }
    10. int main()
    11. {
    12. cout <<FactorialTail(5,1)<< endl;
    13. return0;
    14. }
     
    gcc/g++在执行编译工作的时候,总共需要以下几步:
     
    1.预处理,生成.i的文件[预处理器cpp]
    1. g++-E hello.cpp > hello.i
    功能:输出预处理后的文件,linux下以.i为后缀名。只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 。这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的库文件。用编辑器打开hello.i会发现有很多很多代码,你只需要看最后部分就会发现,预处理做了宏的替换,还有注释的消除,可以理解为无关代码的清除

    2.编译到汇编语言,不进行汇编和链接,即只激活预处理和编译,生成汇编文件.s[编译器egcs]

    1. g++-S hello.cpp
    功能:该命令将自动生成.s汇编文件,这里截取部分代码(主要是尾递归函数)
    _S.png
     
     

    3.由汇编语言通过汇编器变为目标代码(机器代码)生成.o的文件[汇编器as]

    1. g++-c hello.cpp
    功能:.o是GCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义。二进制机器码一般人也读不了。
     

    4.连接目标代码,生成可执行程序[链接器ld]

    命令:g++ Test.o -L F:vs2008VCincludeiostream
    功能:将.o文件与所需的库文件链接整合形成.exe文件,这就是可执行文件。-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同
     
    总结:如果想要简单的编译文件可以使用一下命令就可以了
    1. g++-o hello hello.cpp
     
    • -g
    1. g++-g -S hello.cpp
    _g_S.png
    • -O0(1,2,3)
    1. -O0 不进行优化处理。
    2. -O -O1 优化生成代码。
    3. -O2 进一步优化。
    4. -O3 -O2 更进一步优化,包括inline函数。
    • -Wa,option
    此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
    • -Wa.option
    此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.
     
     
     
     
     
     
     
     
     
     





    附件列表

  • 相关阅读:
    Min_25 筛 学习笔记
    UOJ#172. 【WC2016】论战捆竹竿 字符串 KMP 动态规划 单调队列 背包
    Codeforces 715B. Complete The Graph 最短路,Dijkstra,构造
    UOJ#407. 【IOI2018】狼人 Kruskal,kruskal重构树,主席树
    UOJ#218. 【UNR #1】火车管理 线段树 主席树
    Codeforces 1045E. Ancient civilizations 构造 计算几何 凸包
    Codeforces 947F. Public Service 构造
    Pop Star 1.2.5
    TopCoder SRM704 Div1 800 构造
    Codeforces 1109E. Sasha and a Very Easy Test 线段树
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/4652195.html
Copyright © 2011-2022 走看看