gccg++ 是 GNU 编译器集合(GNU Compiler Collection,简称 GCC)中的两个不同命令,用于编译 C 和 C++ 代码。尽管它们都属于同一个编译器集合,但在处理 C 和 C++ 代码时有一些重要的区别。

主要区别

  1. 默认语言处理

    • gcc:主要用于编译 C 语言代码。对于文件扩展名为 .c 的源文件,gcc 会将它们作为 C 代码处理。
    • g++:主要用于编译 C++ 语言代码。对于文件扩展名为 .cpp.cxx.cc 等的源文件,g++ 会将它们作为 C++ 代码处理。
  2. 链接阶段行为

    • gcc:在链接阶段不会自动链接 C++ 标准库。如果你需要编译和链接 C++ 代码,你需要手动指定链接 C++ 标准库。
    • g++:在链接阶段会自动链接 C++ 标准库。使用 g++ 编译和链接 C++ 代码时,无需手动指定链接 C++ 标准库。
  3. 文件名扩展名的处理

    • gcc:对于 .c 文件,会将其视为 C 代码进行编译。对于其他扩展名(如 .cpp、.cxx),需要使用 -x 选项指定语言类型。
    • g++:对于 .cpp、.cxx、.cc 文件,会将其视为 C++ 代码进行编译。对于 .c 文件,会将其视为 C++ 代码进行编译。

示例

使用 gcc 编译 C 代码

假设有一个简单的 C 程序 hello.c

#include <stdio.h>

int main() {
printf("Hello, C World!\n");
return 0;
}

编译和运行:

gcc hello.c -o hello
./hello

输出:

Hello, C World!

使用 g++ 编译 C++ 代码

假设有一个简单的 C++ 程序 hello.cpp

#include <iostream>

int main() {
std::cout << "Hello, C++ World!" << std::endl;
return 0;
}

编译和运行:

g++ hello.cpp -o hello
./hello

输出:

Hello, C++ World!

使用 gcc 编译 C++ 代码(需要手动链接 C++ 标准库)

也可以使用 gcc 编译 C++ 代码,但需要手动指定链接 C++ 标准库:

gcc hello.cpp -o hello -lstdc++
./hello

gcc 和 g++ 的区别的更多相关文章

  1. Linux - gcc和g++的区别

    一般linux系统都自带了gcc编译器的,你可以用你的安装光盘去安装,如果你是觉得自带的gcc版本太低了,可以去gcc的官方网站可以下载到,编译需要很长的时间,如果你只编译C或者C++可以只下载gcc ...

  2. 【转载】gcc和g++的区别

    [说明]本文转载自 静心 的文章 http://blog.163.com/lu_jun520/blog/static/5699613420116205148239/ 一般linux系统都自带了gcc编 ...

  3. gcc和g++的区别【转自中国源码网】

    gcc和g++的区别[转自中国源码网] gcc和g++都是GNU(组织)的一个编译器. 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是 ...

  4. linux中gcc和g++的区别

    1.两者都是编译器 2.gcc编译c语言:g++既可以编译c语言,也可以编译c++语言 3.gcc不能自动链接库文件,一般用g++来链接库文件,非要用gcc的话,一般使用gcc -lstdc++命令 ...

  5. gcc 与 g++的区别

    原文: http://www.cnblogs.com/wb118115/p/5969775.html ------------------------------------------------- ...

  6. 【C/C++】Linux的gcc和g++的区别

    Windows中我们常用vs来编译编写好的C和C++代码:vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多 ...

  7. 结合python版本安装python-devel gcc和g++的区别 安装前做yum搜索

    [test@ecs autocloudservices]# yum install python-develLoaded plugins: fastestmirrorLoading mirror sp ...

  8. gcc 与g++的区别

    原文 http://www.cnblogs.com/wb118115/p/5969775.html 什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compi ...

  9. gcc和g++的区别:安装、版本、编译(转)

    用以下命令: yum install gcc 安装的只有gcc,而不会安装g++.gcc是编译器合集,而gcc-g++或简称g++则是C++编译器.gcc成为了编译器的选择器.gcc通过识别被编译的源 ...

  10. gcc与g++的区别

    一:gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确, ...

随机推荐

  1. Legacy (线段树优化建图)

    题目链接:Legacy - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题解: 考虑题目中一个点向区间连边,如真的对区间中的每一点分别连边后跑最短路,时间空间都要炸. 因为是一个点向 ...

  2. MAPREDUCE中的序列化

    Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系....),不便于在网络中高效传输: 所以,hadoo ...

  3. ABC199E

    考虑状压. 设计状态 \(dp_{i,j}\) 表示考虑 \(i\) 个数,每个数的使用情况的二进制压缩表示为 \(j\) 的情况下的方案数. 然后去正常转移. 唯一特殊的是将限制放在点上,假若这个点 ...

  4. Mac mysql 5.7.x 设置服务开机自启动

    在终端输入 sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist 输入以下内容 <?xml version="1.0" e ...

  5. SpringBoot 整合模板引擎 jetbrick-template

    添加依赖 <dependency> <groupId>com.github.subchen</groupId> <artifactId>jetbrick ...

  6. 教你基于MindSpore用DCGAN生成漫画头像

    本文分享自华为云社区<[昇思25天学习打卡营打卡指南-第二十天]DCGAN生成漫画头像>,作者:JeffDing. DCGAN生成漫画头像 在下面的教程中,我们将通过示例代码说明DCGAN ...

  7. 解码 xsync 的 map 实现

    解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https://github.com/puzpuzpuz/xsync) . ...

  8. HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`

    WARNINGS: customers.PackingHead.packing_date: (fields.W161) Fixed default value provided. HINT: It s ...

  9. spring boot 快速入门(一)创建一个简单的Spring Boot项目

    1.什么是Spring Boot Spring Boot makes it easy to create stand-alone, production-grade Spring based Appl ...

  10. sftp文件上传下载方法

    随着信息化.数字化的发展,企业对数据安全及应用安全意识普遍加强,在数据文件传输过程中,一般建议使用sftp协议进行文件传输,sftp文件操作脚本如下: sftp操作主要有三种方式,分别是sftp客户端 ...