A:什么是code::blocks?
B: 登陆code::blocks 网站, 查看code::blocks定义。看到几个大字:
|
我们可以根据我们的需要设定code::blocks默认使用的compier。 我使用的是gcc 编译器。
点击得到下图:
最近编译Kruskal Algorithm的时候, 发现code::blocks 不支持C++11 。 准确的说, 其实是code::blocks 使用的Compiler 不支持C++11。 我们知道, C++11提供了许多新的特性, 例如auto变量, 智能指针等等。 但是不幸的是, 对于g++, 只有g++4.7 以上的compiler 才支持C++11。 所以要想使得我们的code::blocks 支持 g++4.7 编译器, 我们必须设置我们的编译器。
我是用的code::blocks的IDE的版本是10.05. 当然不会支持C++11了。 目前最新的code::blocks 的版本是13.12.。 最新版本的当然具有g++4.7 以上的Compiler了。 淡然也就支持C++11了。
由于我不想重新安装code::blocks, 我们需要在电脑中安装g++4.7 以上的编译器了。
PS: 如果你是用的是code::blocks 13系列版本的话, 可以如下操作以便支持C++11:
setting -》 Compiler, 打开编译器设置界面, 选中
然后保存。 参加下图。
由于我的code::blocks 的版本是10.05,settings -> compiler and debugger, 发现没有上面的那个选择(option), 界面如下:
为了为code::blocks配置支持C++11的编译器, 我们需要下载最新的Mingw。
下载完成后, 解压缩相关的Mingw 的文件到C盘下(默认)。 路径为C:\Mingw。 期间出现如下选择窗口:
通过点击查看每个package的作用, 我选择如下C++的Compiler:
然后, 如下点击确认:
根据提示, 继续, 最终得到安装过程如下, 等待, 直至安装成功:
安装完成后如下:
然后, 由于不在安装其他的package了, 关闭即可。
接下来配置环境变量:
切换到安装目录下:
接下来, 赋值安装目录:
配置系统变量Path 如下:
确认即可。
接下来, 打开terminal, 如下(开始-运行-cmd):
出现上述信息, 说明安装成功(没有安装gcc)。
接下来, cls 清屏(记得Linux 系统的清屏命令是clear)。
接下来, 可以查看g++ 的版本号(两种办法如下):
可见, 安装的g++ 的版本是4.8,1, 当然满足我们的需要。
接下来, 我们编写一个程序测试一下:
在D盘中建一个test 文件夹:
打开NOTEPad++ , 编写如下C++ 程序(注意由于使用的是g++ 编译器, 后缀名为.cpp):
保存。
接下来, 打开终端, 切换到hello.cpp 所在的路径中:
可以使用dir 命令查看test 文件夹下的所有文件的信息。
NOTE: 在输入文件夹命令的时候, 学会使用Tab 键, 补全文件名, 键盘上向上箭头是上一个指令, 向下箭头是下一个指令。 以提高我们的工作效率(这点和Linux一样)。
出错了。 原因何在。
注意在windows 中, 我们需要定义编译完成后生成的二进制文件的名字。 所以重新开始。 cls 清屏。 重新输入如下指令(假如我们将编译生成的二进制文件命名为text):
然而运行后任然报错:
报错的原因是没有找到libgmp-10.dll。 有两个原因。 一个是没有设定环境变量(不可能我已经设定了)。 第二个原因是安装包的时候丢失了。 打开C:\MinGW\bin, 果然没有这个文件。接下来, 就是下载这个文件, 然后将其放在C:\MinGW\bin 下面既可以解决问题。
接下来, 再次运行指令:
仍然出错, 此时说是没有找到libmpc-3.dll, 同样, 在网上下载下来, 放到C:\MinGW\bin 下面:
等等一大堆错误。 所以放弃这个方法。
终极解法:
下载最新版本的code::blocks(即13.12), 解压缩此版本的code::blocks , 安装在D盘下, 并复制其中的MinGW文件到C盘下, 直接替换掉刚在的MinGW文件。 由于之前已经配置过环境变量, 无序在配置了(也可以直接在将Path变量设置为D盘下的那个code::blocks所在的文件夹中, 不是, 直接将D:\CodeBlocks\MinGW\bin 设置到Path变量中即可)。 都okay。
然后运行, 编译通过:
查看test文件夹下的文、此时文件:
然后运行可执行文件(直接输入名字即可):
此时也有gcc, 用于编译c 程序(因为这个文件夹是从code::blocks 13.12 复制过来的)。