• Linux下gcc和g++的区别


    首先编写了第一个C++程序,Hello,world!

    #include <iostream>
    using namespace std;
    void main()
    ...{
    cout << "Hello,world!" <<endl;
    return;
    }


    用命令:GCC -o test test.cpp编译,有问题。然后分析,即分开运行GCC.

    GCC -c -o test.o test.cpp。成功执行。

    GCC -o test test.o。出现一堆链接错误。

    g++ -o test test.o。成功执行。

    由此发现,GCC与g++还有有一些区别的。

    GCC and g++分别是gnu的c & c++编译器 GCC/g++在执行编译工作的时候,总共需要4步

     
    1.预处理,生成.i的文件[预处理器cpp
    2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器ccl
    3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as
    4.连接目标代码,生成可执行程序[链接器ld], Eg: 将print.o文件连接合并到hello.o文件中

    1 :两者都可以编译C和C++代码,但是请注意:
    (1).后缀为.c的,GCC把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。

    (2).编译阶段,g++会调用GCC,对于c++代码,两者是等价的,但是因为GCC命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

    2 :对于__cplusplus宏,实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用GCC编译器,则该宏就是未定义的,否则,就是已定义

     
    3 :编译可以用GCC/g++,而链接可以用g++或者GCC -lstdc++。因为GCC命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用GCC,二者等价。
  • 相关阅读:
    EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式
    IE浏览器报400错误:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    list集合根据字段分组统计转换成map
    博客调网易云歌单JS
    如何一次性add library to classpath
    有趣的统计数据表格显示
    span标签的巧用
    "错误: 找不到或无法加载主类"解决办法
    通过改变注入方式以消除警告
    day17--作业
  • 原文地址:https://www.cnblogs.com/zlcxbb/p/5759738.html
Copyright © 2020-2023  润新知