编译器笔记

GCC

http://gcc.gnu.org/

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。
(GNU操作系统是一种由自由软件构成的类Unix操作系统,名称来自【GNU’s Not Unix!】的递归缩写,该系统基于Linux内核,目标在于建立一个完全相容于UNIX的自由软件环境。)

MinGW(windows上的GCC)

www.mingw.org/

MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。

CMake(不是编译器)

https://cmake.org/

Cmake,是一种省事的工具。gcc编译单个文件,make可以批量编译但是需要写makefile,cmake则是生成makefile并调用make来实现批量编译。
make和cmake的区别

MSVC

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

MSVC,即MicroSoft Visual C++,微软的VC编译器。
我们平时说【缺少msvcXXXX.dll】比如:MSVCP140.dll是Visual Studio 2015 [1]的Visual C ++ Redistributable的组成文件。这整个文件包负责运行使用Visual Studio 2015构建的C ++应用程序所需的运行时组件。

Windows下使用Visual Studio自带的MSVC,命令行编译C/C++程序
Windows下VS套件自带的编译程序有以下这些:

cl.exe:编译程序【最常出现错误提示的】
link.exe:链接程序
lib.exe:加载lib库的程序
nmake.exe:用Makefile进行构建、编译的工具

Clang

https://clang.llvm.org/ 

Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,兼容GCC。
【隶属于llvm项目】(LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。)


本处摘自:llvm初识及clang套件安装工具
编译器主要的构成分为三部分:

前端 -- AST -- 后端

前端用于源码解析,最终生成表示源码逻辑的抽象语法树(Abstract Syntax Tree,AST),后端主要将抽象表示的中间代码转为最后适用平台的机器码。

LLVM本身并不是编译器,而是一种编译器的基础架构,在编译器构成部分中,作为一个基础后端,进行机器码的生成处理。
clang并不是编译器,clang是LLVM编译架构的编译前端而已,仅仅是LLVM众多项目中的一个。而整个的编译过程最终都要LLVM的编译基础架构将生成的中间码转成机器码。


另附:知乎上有人问的比较
GCC/G++、ICC、Clang、MSVC、BCC等C/C++编译器有什么特长和不足?

说说集成开发环境

一般来说IDE(集成开发环境)其实就是,
文本编辑器-> 系统命令行调用编译器-> 编译、链接、生成

我们写程序大体步骤为:
1、用编辑器编写源代码,例如.c文件;
2、用编译器编译代码生成目标文件,例如.o文件;
3、用链接器连接目标代码生成可执行文件,例如.exe文件等。

文本编辑器vscode,用命令行使用MSVC编译器,实现编译代码
在VS code中使用MSVC+命令行编译生成C++程序

再往后查,就是自己动手"开发工具链"了,萌新我瑟瑟发抖……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超自然祈祷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值