C/C++ 常见编译器说明

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 C/C++ 常见编译器说明,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

window下常用的编译器

  1. window下并不提供原生的类似gcc/g++的类unix系统下的C/C++编译器。常用的是 MSVC(Microsoft Visual C/C++)编译器,在我们安装完visual studio 2019后,会在 D:\software\visual_studio_2019\IDE\VC\Tools\MSVC\14.29.30133\bin目录下看到Hostx64和Hostx86这两个目录。Hostx64目录下有x64和x86两个目录。Hostx86目录下也有x64和x86两个目录。这里的Hostx64和Hostx86分别表示编译器软件的为啥,Hostx64下的是64位的编译器,Hostx86下的是32位的编译器。其下的x64和x86又分别代码 build的应用程序 所运行的目标平台。
    2.下面以D:\software\visual_studio_2019\IDE\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64目录进行详细讲解:
    其下 最重要的两个可执行文件是 cl.exe和link.exe (即MSVC编译器工具链主要由cl.exe与link.exe构成)
    1.cl.exe用于控制在 Microsoft C/C++的编译器和链接器
    2.link.exe 将通用对象文件格式 (COFF) 对象文件和库链接起来,以创建可执行 (.exe) 文件或 动态链接库 (DLL)
    3.用户只需要调用cl.exe,即可完成编译-链接全过程。

如何获取MSVC

一般来说,获取MSVC要通过Microsoft Visual Studio来实现。对于一般的应用场景来说,我们不需要下载完整的IDE而是只需要下载单个组件下的MSVC C++ 生成工具,以及Windows 10 SDK(注意:如果主机系统是Windows 11则必须用Windows 11 SDK)即可。(MSVC C++生成工具包含了全部编译链接工具链以及大部分函数库与头文件;Windows 10 SDK只是提供其它的一些必要库文件与头文件)
在这里插入图片描述
我们想要在cmd下执行cl.exe命令,还需要配置环境变量。而使用Visual Studio 执行编译时,由IDE工具调用对应的cl.exe来编译链接,不需要我们手动干预。

MinGW

MinGW即Minimalist GNU For Windows,即为Windows系统开发的极简版的GNU, 区分32位和64位,实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。(除了包括GCC即GNU编译器集合,还包括其他的功能)里面包含gcc和g++的类Unix系统上的编译器。开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。让人们在Windows系统下也可以使用gcc和g++的命令。

Linux和MaxOS下的编译器

在讲解Linux下的编译器时,先讲一个GNU的历史,GNU全称是 GNU’s Not Unix。即GNU不是Unix,我们都知道Unix是操作系统,但是GNU也是操作系统,模仿unix开发的但是它是开放自由的。但是至今也没有自己的真正内核,然而不是完整的操作系统。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux(见GNU/Linux命名争议)。
下面讲下GCC,其全称为GNU Compiler Collection,即GNU编译器集合。即GCC是GNU中的一部分。
gcc是GCC中的GNU C Compiler(C编译器);
g++是GCC中的GNU C++ Compiler(C++编译器);
事实上,虽然gcc和g++叫做xxx编译器,但它们只是一种驱动器,根据要编译的文件类型去调用对应的GNU编译器。

gcc和g++的区别

1.gcc可以编译.c文件和.cpp文件,并且gcc会区分它们,分别当作c和cpp文件编译;
2.g++也可以编译.c文件和.cpp文件,但是g++不区分它们,都当做cpp文件编译。
3.编译时,gcc和g++都可以使用,因为编译阶段时g++会调用gcc进行编译;
4.链接时,g++可以使用,gcc需要添加”-lstdc++”才可以使用,因为gcc不能自动和C++库链接,所以一般使用g++进行链接;
5.gcc在编译cpp文件时、g++在编译c文件和cpp文件时,gcc和g++调用的都是cpp文件的编译器,且会加入一些额外的宏定义,宏定义

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/142623.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!