码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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++ 代码的方式编译。

  • 相关阅读:
    PID控制器改进笔记之七:改进PID控制器之防超调设定
    js基础-数据类型检测
    笔记本CPU天梯图(2024年8月),含AMD/骁龙等新CPU
    2分钟搞定全网巡检:一个脚本+五大必备 Python 库,让你一天干别人一周的活
    Ubuntu离线安装g++、locales
    用向量数据库Milvus Cloud 搭建AI聊天机器人
    招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本
    上海亚商投顾:沪指探底回升跌0.75% 旅游板块集体大涨
    香飘飘的想象空间:全面创新驱动外延与内涵双增长,未来可期
    《MATLAB 神经网络43个案例分析》:第32章 小波神经网络的时间序列预测——短时交通流量预测
  • 原文地址:https://blog.csdn.net/weixin_46430763/article/details/133742252
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号