zoukankan      html  css  js  c++  java
  • gcc与g++

    我写过一篇这个文章, 介绍了 GCC 的整体架构

    孙孟越:GCC 的整体架构zhuanlan.zhihu.com图标

    GCC 是 GNU 编译器集合的意思, 对于用户能用的常用命令, 有 gcc 和 g++.

    无论是 gcc 还是 g++, 他们的定位都是 driver.

    driver 负责调用编译器(狭义), 把源码编译到汇编代码. 比如 C 语言的编译器(狭义)是 cc1, 而 C++ 语言的编译器(狭义)是 cc1plus.

    driver 再调用 as, 把汇编代码变成二进制代码. 最后调用 ld, 负责把二进制代码拼在一起.


    gcc 和 g++ 的区别无非就是调用的编译器不同, 并且传递给链接器的参数不同.

    具体而言

    g++ 会把 .c 文件当做是 C++ 语言 (在 .c 文件前后分别加上 -xc++-xnone, 强行变成 C++), 从而调用 cc1plus 进行编译.

    g++ 遇到 .cpp 文件也会当做是 C++, 调用 cc1plus 进行编译.

    g++ 还会默认告诉链接器, 让它链接上 C++ 标准库.

     

    gcc 会把 .c 文件当做是 C 语言. 从而调用 cc1 进行编译.

    gcc 遇到 .cpp 文件, 会处理成 C++ 语言. 调用 cc1plus 进行编译.

    gcc 默认不会链接上 C++ 标准库.

     

    这些区别都可以在

    回答中的那两个源代码中看到.

  • 相关阅读:
    wsdl和soap(简单使用TCPMon工具)03
    Django-7
    Django-6
    Django-5
    Django-4
    Django-3
    Django-2
    Django-1
    python_控制台输出带颜色的文字方法
    python网络编程
  • 原文地址:https://www.cnblogs.com/cnhk19/p/15047814.html
Copyright © 2011-2022 走看看