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





    附件列表

  • 相关阅读:
    事务四大特征:原子性,一致性,隔离性和持久性(ACID)
    解决“要登录到这台远程计算机,你必须被授予”
    SqlServer_查看SQLServer版本信息
    sed 查找文件的某一行内容
    linux echo命令的-n、-e两个参数
    在.Net中进行跨线程的控件操作(上篇:Control.Invoke)
    .NET性能优化方面的总结
    SQLSERVER2008 显示列信息,包含扩展属性
    C#4.0新特性:可选参数,命名参数,Dynamic
    浅谈.net中的params关键字
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/4652195.html
Copyright © 2020-2023  润新知