Code::Blocks 10 用了很久了,用得还算方便。今天看到其官网上版本已经到了16.01了,想来要不升级一下吧。于是烦恼的事情也就来了,当然麻烦也不算太大。
1. 第三方库的添加
为了干净的安装,我把原来的Code::Blocks10 完全卸载了,并且彻底删除干净。但是我忘了,有些库我是后来加进去的,时间一长自然也就不知道添加了什么库。只是最近在用 libcurl ,才想到需要重新去下载了。
附: curl 的官方网站
https://curl.haxx.se/
下载 libcurl 的链接
https://curl.haxx.se/dlwiz/?type=lib
关于 libcurl 的安装说明:
解压缩从上面网址下载的
curl-7.40.0-devel-mingw32.zip 文件
(1) 将 curl-7.40.0-devel-mingw32\bin\curl.exe 等文件拷贝到 C:\Program Files\CodeBlocks\MinGW\bin 中,其中 zlib1.dll 已经存在,就不必覆盖了,因为相比CodeBlocks提供的比较旧。
(2) 将 curl-7.40.0-devel-mingw32\include 下的所有文件拷贝到 C:\Program Files\CodeBlocks\MinGW\include, 当然 README 文件不用拷贝。
(3) 将 curl-7.40.0-devel-mingw32\lib 下的所有文件拷贝到 C:\Program Files\CodeBlocks\MinGW\lib 中。
-------------------
还有哪些库不是 Code::Blocks 自带的?
比如 libsqlite3.a
2. wxWidgets 得重新编译
当然如果不用 wxWidgets,就不用考虑这个问题。我之前用的是 wxWidgets2.9.4 , 也是在使用了稳定版 2.8.12 后折腾升级的。现在官网 上最新的稳定版本是 3.0.2 。
为什么要重新编译?原因在于新的 Code::Blocks 自带的 MinGW (我一般下载附带MinGW的版本,怕烦)中的 gcc 版本是 4.9 ,而旧的 Code::Blocks 10 自带的 MinGW 中的 gcc 版本是 4.7(好像是,删了就忘了) 。用 4.9 的 gcc 去编译那些引用 4.8或以下的 gcc 编译生成的 wxWidgets 库可能会出现问题。总之,要一致。
那好,我们就下载新版本的 wxWidgets 吧。
先别高兴太早啊,问题总是有的。让我们先回忆一下如何编译 wxWidgets
(1) 到
上下载 wxWidgets, 我选择 Windows 7Z (16MB)
(2) 将其加压缩到 C 盘根目录,比如 C:\wxWidgets-3.0.2
(3) 按 Win+R, 输入 cmd, 在命令提示符下键入 cd \
wxWidgets-3.0.2 转到wxWidgets所在的目录。然后 cd build\msw 进入 msw 目录。
(4) 确保 mingw32-make.exe 能够找到,不妨找一下吧
C:\wxWidgets-3.0.2\build\msw> where mingw32-make.exe
我的显示为 C:\Program Files\CodeBlocks\MinGW\bin\
mingw32-make.exe
这说明,环境变量 PATH 有该路径 “
C:\Program Files\CodeBlocks\MinGW\bin” 。所以先安装好 Code::Blocks。
(5) 看一下
C:\wxWidgets-3.0.2\build\msw\gcc_mswu 这个文件夹是否为空,当然一开始是空的。
如果未空(比如想重新编译),则执行下面的命令将其清空。
mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=release clean
确保是空的后,执行下面的命令
mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 BUILD=release
其中参数
SHARED=0 表示静态,具体含义参见
如果你要动态的,就设置为 1.
这个过程一般要半小时以上的时间才能编译完成。不过没过多久,我们就碰到了下面的问题
这时由于 c++ 11 新标准带来的问题,上面也说了,还在实验过程中,所以要使用c++11 必须多做一步,这在 Code::Blocks 新建工程后也要麻烦一下,在 Build options 中要勾选 c++ 11 standard。
解决办法:
用编辑器打开gcc 的配置文件 C:\wxWidgets-3.0.2\build\msw\config.gcc ,找到 CXXFLAGS,就是下面
# Standard flags for C++
CXXFLAGS ?=
在它下面加上
CXXFLAGS += "-std=gnu++11"
保存。然后再执行
mingw32-make -f makefile.gcc BUILD=release SHARED=0 UNICODE=1
就没有问题了。
编译的时间会比较长,至少半小时。
--------------------
References:
--------------------
Remark:
使用旧版的 MinGW(所含 gcc 是 4.8)编译没有报错。但是这样编译得到的 wxWidgets 无法被新版 CodeBlocks (所含 gcc 是4.9)使用。
--------------------
总结:
有时用得好好的,就不要赶时髦去升级了,一升级牵扯的事情就会很多。我现在还是用着很久之前安装的 Archlinux , 没有更新也用得挺好的,Windows 7 是自动更新,也不用费心。去掉强迫升级的心态,不然会非常累。除非自己是开发这个软件的,或者由于某种原因不得不选择升级。
阅读(4660) | 评论(0) | 转发(0) |