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分成多个选项,然后传递给会连接程序.
     
     
     
     
     
     
     
     
     
     





    附件列表

  • 相关阅读:
    PHP数组(数组正则表达式、数组、预定义数组)
    面向对象。OOP三大特征:封装,继承,多态。 这个讲的是【封存】
    uvalive 3938 "Ray, Pass me the dishes!" 线段树 区间合并
    LA4329 Ping pong 树状数组
    HDU 1257 最少拦截系统
    HDU 1260 Tickets
    codeforce 621D
    codeforce 621C Wet Shark and Flowers
    codeforce 621B Wet Shark and Bishops
    codeforce 621A Wet Shark and Odd and Even
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/4652195.html
Copyright © 2011-2022 走看看