cc、gcc、g++、CC的区别概括

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
   gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。

cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、Java)。因此,它们是不一样的,一个是古老的C编译器,一个是GNU编译器集合,gcc里面的C编译器比cc强大多了,因此没必要用cc。

下载不到cc的原因在于:cc来自于昂贵的Unix系统,cc是商业软件。

Linux下的cc是gcc符号连接,可以通过$ls –l /usr/bin/cc来简单察看,该变量是make程序的内建变量,默认指向gcc。cc符号链接和变量存在的意义在于源码的移植性,可以方便的用gcc来编译老的用cc编译的Unix软件,甚至连makefile都不用改在,而且也便于Linux程序在Unix下编译。

 

误区一:gcc只能编译C代码,g++只能编译C++代码。

两者都可以,但请注意:

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

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

 

误区二:gcc不会定义__cplusplus宏,而g++会

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

 

误区三:编译只能用gcc,链接只能用g++

严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。

 

C++的编译器肯定可以编译C的代码,注意除了C++对C的语法扩充之外,编译和链接C和C++的标准库通常也不一样呢,用gcc而非g++也编译了C++的程序就证明了这一点。

 

注:符号链接是一种特殊类型的文件,它的内容只是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当您在命令行或程序里提到符号链接的时候,您实际上进入了它指向的文件,前提是这个文件是存在的。

关于出现The C complier "/usr/bin/cc" is not able to complie a simple test program 的错误处理 MacOs在装完Clion之后需要安装编译器才可以正常对程序进行编译。 在安装完Cmake和Xcode之后遇到了这样的问题: 原因是没有licence 在终端输入:sudoxcodebuild -license 输入完密码之后,就会出现如下一长串的类似协议的文字,最后一行有如下提示: 这时候只要一直按空格就行了,直到出现: 这时候只要在尾端输入: agree 然... 阅读详情

相关推荐

YOLOv8跨越效率与性能的鸿沟:在YOLOv8中集成双级路由注意力 (BiFormer) 深度实践教程

本文介绍了如何将BiFormer的双级路由注意力机制(BiLevelRoutingAttention)集成到YOLOv8目标检测框架中,以提升模型性能。主要内容包括: BiFormer的背景与优势:通过区域级和像素级双层路由策略,在保持全局建模能力的同时显著降低计算复杂度,解决传统Transformer在高分辨率图像处理中的效率问题。 技术原理详解: 区域级路由:先对特征图分块并计算区域间粗粒度注意力,筛选出关键区域 像素级注意力:仅在被选中的相关区域内执行精细的像素级注意力计算 这种"先粗后细&

FJN110的博客 618

GCCCC区别

硬件和软件开发是为计算功服务的。它是一个广阔的领域,包括科学、技术、社会等各个方面。在计算的过程中,编译器会被使用。编译器基本上是一个计算机程序,旨在将高级语言转换成低级语言,以便于执行。需要编码来写出编译器需要的程序。今天,有各种类型的编译器可用。 GCCCC编译器区别在于,GCC被称为GNU编译器操作系统,而CCUNIX编译器命令。这两个编译器是不交叉兼容的。这是因为C++程序与C库兼容,而C程序与C++库不兼容。 GCC被称为GNU编译器集。它已经被许多其他操作系统所接受。它默认..

guoqx的专栏 6749

GCC编译器CC编译器区别

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

主要记录嵌入式学习与开发过程。 5019

编译器ccCCgcc、g++区别

编译器ccCCgcc、g++区别 看C语言经典教材《C程序设计语言》中,Linux下编译C代码用的是cc, 广为人知的C编译器gcc, 还有CC、g++那么有啥差异呢 一、ccUnix下C语言编译器,是c compiler的缩写。 cc是付费的。所以Unix的两个孩子Linux和Mac OS上的cc都是软连接。 0、Linux下(这里测试用的是Centos) 1 2 3 4 5 6 [root@izj6cfhaw27k49x

二进制模----细微行动改变影响世界 3918

编译:ccgcc、g++、CC区别概括

gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gccgcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。 ccUnix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun

hzraymond的专栏 2196

ccgcc、g++、CC区别概括(好文章)

误区一:gcc只能编译C代码,g++只能编译C++代码。 两者都可以,但请注意: (1)后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是C++程序,注意,虽然C++是C的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。 (2)编译阶段,g++会调用gcc,对于C++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只

爱拼才会赢 1293

[编译器] ccgcc、g++、CC区别概括

gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gccgcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。 ccUnix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gc...

anchang7456的博客 125
上一篇: 使用typedef语句定义数组类型
下一篇: 电容容量老是记不住
hackaday
博客等级 码龄15年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值