编译器gcc与g++的区别
2016-06-12 01:16
309 查看
gcc开始时候的名字是GNU c compiler, 就是说设计的初衷是用来编译C语言的。 后来,不断的拓展发展成了 gnu compiler collection。如果你用gcc编译过fortran代码的话,就会对后者理解的比较深刻了。g++的设计目标是用来编译C++程序代码的,如期名字所暗示的那样。因此,g++是一个c++ compiler,gcc是 compiler collection。所以,可以推知g++的功能只是gcc的一个子集。
gcc可以用来编译.cpp为后缀的c++程序源文件,同样g++也可以。你可能以为使用gcc编译的时候,会调用g++。然而,并非如此!!!g++诞生的比gcc晚,刚诞生的g++事实上是用脚本语言写的,其中将一系列的命令行参数传给了gcc,所以应该说g++的内部调用了gcc。旧版本的g++的实现脚本是用bash写的,虽然现在的g++使用二进制可执行文件写的,但是内部原理还是一样的。
gcc和g++的具体区别有以下几点:
(1)对于.cpp为后缀的C++文件,使用gcc编译或者g++编译效果差不多一样的,但是连接的时候不同,g++会在链接的时候自动使用libstdc++,而gcc不会。
(2)对于.c为后缀的源文件,gcc默认使用c编译器去编译,而g++默认调用的是c++的编译器。
(3)使用gcc和g++在编译.cpp文件时都会额外定义一些宏,这些宏在使用gcc编译.c文件时没有的,这些宏包括:
学习资料参考于: http://hipercomer.blog.51cto.com/4415661/846923
gcc可以用来编译.cpp为后缀的c++程序源文件,同样g++也可以。你可能以为使用gcc编译的时候,会调用g++。然而,并非如此!!!g++诞生的比gcc晚,刚诞生的g++事实上是用脚本语言写的,其中将一系列的命令行参数传给了gcc,所以应该说g++的内部调用了gcc。旧版本的g++的实现脚本是用bash写的,虽然现在的g++使用二进制可执行文件写的,但是内部原理还是一样的。
gcc和g++的具体区别有以下几点:
(1)对于.cpp为后缀的C++文件,使用gcc编译或者g++编译效果差不多一样的,但是连接的时候不同,g++会在链接的时候自动使用libstdc++,而gcc不会。
(2)对于.c为后缀的源文件,gcc默认使用c编译器去编译,而g++默认调用的是c++的编译器。
(3)使用gcc和g++在编译.cpp文件时都会额外定义一些宏,这些宏在使用gcc编译.c文件时没有的,这些宏包括:
#define __GXX_WEAK__ 1 #define __cplusplus 1 #define __DEPRECATED 1 #define __GNUG__ 4 #define __EXCEPTIONS 1 #define __private_extern__ extern
学习资料参考于: http://hipercomer.blog.51cto.com/4415661/846923
相关文章推荐
- 隐写术总结
- python的高级module工具
- 邮件攻击
- 漏洞综合利用总结
- Wireshark笔记
- Kali进行web渗透笔记(十一)
- Kali进行web渗透笔记(十)
- 第一篇博文
- Kali进行web渗透笔记(九)
- js解析php数组
- 我的第一个公众号
- 正则表达式使用
- Android UI(二)
- Kali进行web渗透笔记(七)
- 代码训练营—File,删除一个带内容的目录
- Python_Day6_反射_正则表达式之篇
- android应用层服务——binderService与StartService
- Kali进行web渗透笔记(六)
- Unity之快捷键组合
- PAT-基础编程题-5-38 数列求和-加强版