• gcc和g++区别


    一、什么是GNU编译器?

    GNU编译器(GNU Compiler Collection,简称GCC),是一套由自由软件基金会所发展的编程器。GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、以及其它一些语言。它是Linux系统和很多类Unix的标准编译器。

    GCC中,每种语言分别有单独的解释器。举例而言,编译C语言时会触发cc1、as、ld,并以一个可执行二进制文件结束。GCC目的是为了能够支持多种源代码语言并支持多种目标架构

    二、GCC的编译选项

    使用GCC编译时,可以指定一些选项来控制编译的过程。以下是一些常用选项:

    1. 编译选项

    (1)-c:只编译,不连接。

    (2)-E:只运行C预处理器,不编译。

    (3)-S:只编译,生成汇编代码。

    2. 优化选项

    (1)-O:指定最优化级别。

    (2)-Os:最小化代码大小。

    (3)-Og:仅在调试时开启优化。

    3. 链接选项

    (1)-l<库名称>:链接库。

    (2)-L<库目录>:指定库目录。

    (3)-no-pie: 为了旧版本ELF格式的二进制兼容而加入,它取消了PIE特性,禁止生成位置独立的可执行文件。

    三、GCC用法举例

    下面是一个简单的C++程序:

    #include 
    
    using namespace std;
    
    int main()
    {
        cout << "Hello, world!" << endl;
        return 0;
    }
    

    我们可以使用以下的命令来编译:

    g++ -o helloworld helloworld.cpp
    

    这里,g++ 是 GCC 对 C++ 的编译器,-o 选项指定输出的二进制文件名称为 helloworld,然后我们指定编译的文件为 helloworld.cpp。

    通过以下命令可以查看GCC的版本:

    gcc -v
    

    如果发现版本较旧,可以选择进行升级。

    which gcc     可以查看路径

    只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别,比如:

    • xxx.c:默认以编译 C 语言程序的方式编译此文件;
    • xxx.cpp:默认以编译 C++ 程序的方式编译此文件。
    • xxx.m:默认以编译 Objective-C 程序的方式编译此文件;
    • xxx.go:默认以编译 Go 语言程序的方式编译此文件;

    当然,gcc 指令也为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项。例如,gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件;而 gcc -xc++ xxx 则表示以编译 C++ 代码的方式编译 xxx 文件。

    但如果使用 g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。也就是说,对于 .c 文件来说,gcc 指令以 C 语言代码对待,而 g++ 指令会以 C++ 代码对待。但对于 .cpp 文件来说,gcc 和 g++ 都会以 C++ 代码的方式编译。

  • 相关阅读:
    monorepo 下的 package tsc 构建
    【Node.js】时钟案例---将一个网页分别拆分成css、html和js文件
    【专精特新周报】专精特新“小巨人”科润智控上市;北交所首例!生物谷及责任人被纪律处分;北交所4家企业发布半年度业绩预告...
    【云原生】SpringCloud系列之客户端负载均衡Ribbon
    AutoJSPro薅羊毛脚本源码
    RabbitMQ------简单队列模式以及工作队列模式以及消息应答的方式(三)
    【附源码】计算机毕业设计JAVA传统文化知识竞赛系统
    行业追踪,2023-09-14
    23.8.29.反序列化的时候,不要import错了
    H5微信端在IOS上不能播放音乐解决方案
  • 原文地址:https://blog.csdn.net/weixin_46430763/article/details/133742252