1.编译器下载安装
编译器mingw下载地址:sourceforge.net/projects/mingw
下载成功/直接安装并运行/Install/选择安装文件夹/ 可选D盘/dev/sdk/mingw /确定/continue
开始联网下载。
continue/弹出mingw工具的安装管理器/开发C++相关套件,选择mingw32-base(勾选mark for installation标记为安装)、mingw32-goo-g++(同,C++编译器)
选择installation/apply changes应用更改/apply/开始联网下载并安装
然后可关闭窗口,编译器安装完成。
安装目录下可找到编译器程序,其中核心程序g++(编译器即g++程序)
2.配置环境变量
开始菜单/搜索“高级系统配置”/系统属性/环境变量/系统变量(下面一个框)/找到PATH变量/编辑/
新建/把mingw安装目录中的bin文件夹路径复制进来/确定
环境变量配置完成
3.验证
cmd/g++ -v回车 出现版本gcc version,说明环境变量OK。至此相关编译器前置操作一切顺利。
4.手动编译代码
在自己的代码文件夹里新建text文本文件;
写入hello world文件
#include "iostream"
using namespace std;
int main()
{
cout << "Hello World!!!" << endl;
return 0;
}
保存;关闭。
改文件名&后缀名.cpp。现在相当于有一份代码文件,要做的是如何通过编译器把这份代码编程可执行的程序。
打开CMD,让当前命令提示符的路径切换到代码所在文件夹。现在所在文件夹在C盘
输入d: ,切换到D盘;
cd 路径;//如:cd D:\dev\code\cpp\mine_cpp
现在, 输入:dir 命令,可看到当前文件夹有hello world.cpp的文件
现在,可通过刚才安装的编译器编译这份代码文件。
怎么用?
(记住格式即可)
输入: g++ hello world.cpp -o hello_world.exe//使用g++程序,选择hello world.cpp的文件(选择被编译的代码文件),-o(表示输出),写上要生成的程序名称hello_world.exe。回车。
这句g++ hello world.cpp -o hello_world.exe 表示把代码文件hello world.cpp变成hello_world.exe的程序。
回车完后,可看到目录里生成hello_world.exe,直接双击运行没啥效果,可在cmd里运行。
在cmd中输入hello_world.exe,直接回车,可出现Hello World!!!,当前代码执行成功。
图文笔记:www.yuque.com/bigdata-caoyu/newcpp
补充:
MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。
c++编译器有:1.acc 2.bcc 3.ccc 4.clang 5.gcc
1.acc
HP aC++ compiler, 指的是HP C/aC++ 开发者工具包中包含的编译器,特指HP C/ANSI C compiler编译器。它主要是在惠普服务器上运行的。 HP Integrity 和 HP 9000 服务器上运行的 HP-UX 操作系统上的编译器。HP-UX 是基于System V,是Unix的一个变种。惠普服务器支持范围从入门级商业应用到大规模服务器应用, 比如SAP软件就有搭建在 HP-UX 操作系统之上的。
2.bcc
Borland C++ compiler,是MS-DOS 和 Microsoft Windows的编译器。Turbo C/C++的进化版。
3.ccc
Compaq C compiler, 如其名,康柏电脑公司的C编译器,比如操作系统Tru64 UNIX就是使用这种编译器。
4.clang
Clang C compiler,Clang的C语言编译器。Clang是一个支持C,C++,OC,OC++四种C家族编程语言的编译器。它的目标就是为苹果提供提供基于LLVM的GNU编译套装(GCC)的替代品。我们现在的mac电脑就是使用这个编译器。
最早之前苹果的编译器完全继承UNIX,使用的是GNU编译套件,后来,编译后端(将生成的AST数优化,并且生成适用于各个系统架构的指令集合)。苹果使用LLVM将编译优化和编译后端全部统一了。但是前端还是GCC,所以有一段时间是GCC+LLVM的组合。但是后来Clang创建之后,就是使用Clang+LLVM的组合了。现在Apple的所有语言都是基于这个组合了。
5.gcc
GNU C compiler。GNU就是最著名的Unix的编译器了。最早的时候叫做GNU C编译器,早于1984年,每一个类Unix操作系统都需要一个C编译器来让程序员可以用高级语言C来写程序。当时没有免费的编译器,所以GNU项目从头开发了一个编译器。1987年GCC的第一个版本发布。1992年,增加了对C++语言的支持。而后,支持了更多的语言,所以GCC这个缩写由原先的GNU C Compiler变化成为了GNU Compiler Collection。
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)
GNU是一个操作系统
GCC(GNU Compiler Collection)和 G++ 是 GNU 项目的一部分。GCC 是一个多语言支持的编译器,可以处理 C、C++、Fortran 等语言,而 G++ 是 GCC 的 C++ 前端,用于专门处理 C++ 源代码。
实际上,只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别,比如:
xxx.c:默认以编译 C 语言程序的方式编译此文件;
xxx.cpp:默认以编译 C++ 程序的方式编译此文件。
xxx.m:默认以编译 Objective-C 程序的方式编译此文件;
xxx.go:默认以编译 Go 语言程序的方式编译此文件;
当然,gcc 指令也为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项。例如,gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件;而 gcc -xc++ xxx 则表示以编译 C++ 代码的方式编译 xxx 文件。
但如果使用 g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。也就是说,对于 .c 文件来说,gcc 指令以 C 语言代码对待,而 g++ 指令会以 C++ 代码对待。但对于 .cpp 文件来说,gcc 和 g++ 都会以 C++ 代码的方式编译。
有读者可能会认为,C++ 兼容 C 语言,因此对于 C 语言程序来说,使用 gcc 编译还是使用 g++ 编译,应该没有什么区别,事实并非如此。严格来说,C++ 标准和 C 语言标准的语法要求是有区别的。C++ 标准对代码书写规范的要求更加严格。
除此之外对于编译执行 C++ 程序,使用 gcc 和 g++ 也是有区别的。要知道,很多 C++ 程序都会调用某些标准库中现有的函数或者类对象,而单纯的 gcc 命令是无法自动链接这些标准库文件的。
如果想使用 gcc 指令来编译执行 C++ 程序,需要在使用 gcc 指令时,手动为其添加 -lstdc++ -shared-libgcc 选项,表示 gcc 在编译 C++ 程序时可以链接必要的 C++ 标准库。
总之:对于 C 语言程序的编译,我们应该使用 gcc 指令,而编译 C++ 程序则推荐使用 g++ 指令

图中为安装mingw后Clion里的显示
GCC/G++ 的编译过程分为四个主要阶段:
1. 预处理阶段
预处理是编译的第一个阶段,主要完成以下任务:
- 宏替换:替换所有
#define定义的宏。 - 条件编译:根据预处理指令(如
#ifdef)选择性地编译代码。 - 去除注释:删除源代码中的注释内容。
- 展开头文件:将
#include指定的文件插入到源代码中。
命令示例:
gcc -E hello.c -o hello.i
- **选项 **
-E:执行预处理并停止。 - **输出文件 **
.i:预处理后的代码。
2. 编译阶段
在此阶段,编译器会:
- 检查源代码的语法和语义是否正确。
- 将 C/C++ 源代码翻译为汇编语言代码。
命令示例:
gcc -S hello.i -o hello.s
- **选项 **
-S:仅执行编译,生成汇编代码。 - **输出文件 **
.s:包含汇编代码。
3. 汇编阶段
汇编阶段将汇编代码转换为机器可识别的目标代码(二进制格式)。
命令示例:
gcc -c hello.s -o hello.o
- **选项 **
-c:仅执行汇编,生成目标文件。 - **输出文件 **
.o:二进制目标文件。
4. 连接阶段
连接阶段将多个目标文件和库文件链接在一起,生成可执行文件或库文件。连接过程中可能会调用外部的动态或静态库。
命令示例:
gcc hello.o -o hello
- **输出文件 **
hello:最终生成的可执行文件。
2万+

被折叠的 条评论
为什么被折叠?



