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


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++的程序就证明了这一点。

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样在vs中监视char*字符串_字符串指针数据类型

一、前言在实际开发中,特别是芯片开发中,例如智能传感器芯片,经常直接使用C语言指针数据类型来操作寄存器。那么字符串指针就是我们常见的操作。C语言没有单独的字符串对象,它是通过数组的形式来表示字符串的:#include…

php mysql 替换 pdo,php操作MySQL数据库之PDO方式

这篇文章主要介绍了关于php操作MySQL数据库之PDO方式 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下基本使用1)连接数据库$pdo new PDO(“mysql:hostlocalhost; dbnamedb_name”,username,password);2)执行SQL语句$pdo ->…

.NET操作Excel

一.读取Excel数据&#xff0c;并显示 1.配置文件 <configuration> <system.web> <compilation debug"true" targetFramework"4.0" /> </system.web> <appSettings> <!--连接03版本的--> &l…

AC_CHECK_LIB的工作原理

AC_CHECK_LIB就是告诉configure我们需要检查哪些lib&#xff0c;并根据检查结果做什么处理。正是在这里遇到了问题并有所收获&#xff0c;才促使我写这篇blog记录一下。问题是这样&#xff0c;我想检查一下libXv.so这个库是否存在&#xff0c;不存在的话就让configure直接退出。…

mac json格式化工具_一个在 MAC 上 iOS/Flutter 开发的辅助工具

大家好&#xff0c;我是章鱼猫。今天给大家推荐的这个开源项目&#xff0c;是来自于我们公众号读者的投稿&#xff0c;这个东西还挺好的。如果你作为读者&#xff0c;也有自己的开源项目或者你也有想推荐的开源项目&#xff0c;都可以向我们投稿&#xff0c;我们就是致力于帮助…

php 开启fsockopen函数,巧用php的fsockopen函数

这几天闲着没事&#xff0c;用PHP的fsockopen写了几个文件为我的酷我音乐盒的帐户加分。获得途径 积分音乐盒完整的听一首歌曲 1(每天最高200)音乐坊成功上传一张歌单 50(每天最高200)酷我音乐空间空间被访问1次 1(每天最高50)有人打招呼1次 2(每天最高50)有人留言(非主人) 5(每…

java中多维数组的clone容易引起误解

int[][] arr1 new int[][]{{1,2},{1,2}}; int[][] arr2 arr1.clone(); 因为arr1!arr2所以我的意图是 修改arr2 在确定修改结束后 将arr2赋给arr1依此保证在arr2修改过程中arr1不变&#xff0c;&#xff0c;&#xff0c;但神奇的是竟然变了后来才注意到虽然arr1!arr2但arr1[0]…

python编写界面遍历_python和pywin32实现窗口查找、遍历和点击的示例代码

Pywin32是一个Python库&#xff0c;为python提供访问Windows API的扩展&#xff0c;提供了齐全的windows常量、接口、线程以及COM机制等等。1.通过类名和标题查找窗口句柄&#xff0c;并获得窗口位置和大小import win32guiimport win32apiclassname "MozillaWindowClass&…

termcap-1.3.1的configure.in文件逐行分析

AC_INIT(termcap.h) 每个configure文件第一个需要调用的宏&#xff0c;他处理所有的命令行参数并且寻找源代码目录。termcap.h是包含在源代码目录下的文件&#xff0c;configure在目录中检查这些文件是否存在以确定该目录是否包含源代码。 AC_ARG_ENABLE(install-termcap, [ …

php转换图片属性a,PHP 提取图片img标记中的任意属性

/* PHP正则提取图片img标记中的任意属性 */$str PHP正则提取或更改图片img标记中的任意属性;//1、取整个图片代码preg_match(/]*?src\s*\s*(\|\")(.*?)\\1[^>]*?\/?\s*>/i,$str,$match);echo $match[0];//2、取width属性preg_match(//i,$str,$match);echo $mat…

OOP三言两语

OOP面向对象编程&#xff0c;主要特点&#xff1a;封装、继承、多态&#xff0c;一切即对象。 多态&#xff1a;编译时多态-- 方法重载 &#xff08;方法名称相同&#xff0c;签名不同&#xff09;。 运行时多态--子类override 父类的&#xff08;vitural、abstract&#xff09…

交叉编译termcap1.3.1

修改Makefile文件其中两行即可 CC gcc 改为 CC arm-linux-gcc AR ar 改为 AR arm-linux-ar 编译后生成libtermcap.a文件&#xff0c;将其拷贝到交叉工具链的lib文件夹下即可使用。

python实现数字时钟_Python 写的全屏数字时钟软件,看看还有什么改进的地方

zgzb&#xff1a;软件启动图&#xff1a; https://s1.ax1x.com/2020/09/25/096RzV.png链接&#xff1a; https://www.lanzoux.com/i2vCzgwo0xawjj5728&#xff1a;啥都不说&#xff0c;先瞎为敬。黑色字看不到呀rglee&#xff1a;这配色绝了galileo1214&#xff1a;这全屏有啥用…

php ajax无刷新分页源码,ajax实现无刷新分页(php)

投票结果function GetXmlHttpObject(){var xmlHttpnull;try{// Firefox, Opera 8.0, SafarixmlHttpnew XMLHttpRequest();}catch (e){// Internet Explorertry{xmlHttpnew ActiveXObject("Msxml2.XMLHTTP");}catch (e){xmlHttpnew ActiveXObject("Microsoft.XML…

SQL嵌套语句执行顺序

首先我们要了解一下SQL语句的执行过程。 SELECT 字段 FROM 表名 WHERE 条件表达式 那它们是按什么顺序执行呢&#xff1f;分析器会先看语句的第一个词&#xff0c;当它发现第一个词是SELECT关键字的时候&#xff0c;它会跳到FROM关键字&#xff0c;然后通过FROM关键字找到表名并…

fatal error: Python.h: No such file or directory

ubuntu下编译libxml2时&#xff0c;报错. 执行apt-get install python-dev即可

php 计划任务 不执行,CentOS 系统下 Laravel 计划任务 PHP artisan schedule:run 不执行,应该如何处理?...

服务器是centos系统&#xff0c;现在遇到一个很奇怪的问题&#xff0c;计划任务不能执行&#xff0c;本来设的是定时检查用户表&#xff0c;给当天过生日的用户发生日祝福短信&#xff0c;日志记录计划任务执行了&#xff0c;但没有短信发送&#xff0c;laravel日志中也没有记录…

(转)Win7下如何硬盘安装Ubuntu

1.下载Linux镜像及EasyBCD   以Ubuntu为例&#xff1a;http://www.ubuntu.com/desktop/get-ubuntu/download  系统引导软件EasyBCD&#xff1a;http://neosmart.net/EasyBCD/  2.设置NeoGrub启动项   1&#xff09;ubuntu下载文件放在C:\ubuntu-10.10-desktop-i386.iso&…

编译libxml2-2.6.26 __open_missing_mode 错误

调用open函数&#xff0c;因为使用open函数的时候&#xff0c;如果在第二个参数中使用了 O_CREAT&#xff0c;就必须添加第三个参数&#xff1a;创建文件时赋予的初始权。 解决方案&#xff1a;在调用open函数的那一行的参数里加个“0666”或者“0777”均可&#xff01; 如&…

卡巴斯基授权许可文件_制片方未提供电视台授权证明,构成根本违约吗?

在制作娱乐法101课程的过程中&#xff0c;需要检索很多案例&#xff0c;有时候也也看到一些似乎不太合理的判决书。在一起电视播映权纠纷中&#xff0c;合同中一般会常规约定制作方需要向电视台提交确保其在合同授权区域、授权范围、授权期限内具有合法播映权的证明文件的合同义…