今天想在个人RedHat上装个CodeBlock,费了挺多时间的。装到要吃晚饭的时候终于成功了,因而决定写篇文章记录下个人安装过程。php
由于安装过程很是“曲折”,因此这篇文章也记录了不少我试错的过程,不少步骤在后面看来均可以算做废步骤。若是但愿看到最精简的解决方案,能够求助其余大牛的安装过程。这篇文章只至关于我今天在个人计算机上安装CodeBlock的一个笔记(惭愧~~~ :-P)。html
1.个人环境linux
我是在RedHat上安装的CodeBlock,版本号能够用下面这个命令查询shell
cat /etc/redhat-release
查询出来的版本信息为:vim
Red Hat Enterprise Linux Server release 6.4 (Santiago)windows
我在虚拟机里安装的是64位的RedHat,关于RedHat是32位仍是64位,能够用命令oracle
arch
查出来,我查出来的是x86_64,说明是64位的
socket
2.下载CodeBlock网站
登录到CodeBlock官方网站的下载页面 http://www.codeblocks.org/downloadsui
登录后在左侧树形菜单中找到 Main→Download→Binaries
由于我是在RetHat上安装,因此我选了和RetHat比较近的Fedora上的安装包
codeblocks-13.12-1.el20.x86_64.tar.xz
我在 Download from 栏中选择了 Sourceforge.net
安装过程能够参考官网本身的wiki页面 http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_nightly_build_on_Fedora
下载后我把它放在了我系统里 /home/oracle/Downloads/codeblocks (oracle是我在这个linux系统里的用户名)
解压这个文件,输入命令
xz -d codeblocks-13.12-1.el20.x86_64.tar.xz
解压后能够发现目录 codeblocks-13.12-1.el20.x86_64.tar,再次解压
tar xvf codeblocks-13.12-1.el20.x86_64.tar
解压缩后有文件夹 fc20,进入后能够发现目录 fc20/x86_64/ 中有四个文件
codeblocks-13.12-1.el29.x86_64.rpm
codeblocks-contrib-devel-13.12-1.el29.x86_64.rpm
codeblocks-contrib-13.12-1.el29.x86_64.rpm
codeblocks-devel-13.12-1.el29.x86_64.rpm
输入下面的命令进行安装
yum install codeblocks*
结果安装失败,查看提示信息后发现须要wxGTK
3.下载并安装wxGTK
下载地址:http://www.filewatcher.com/m/wxGTK-2.8.1.tar.bz2.8891289-0.html
这个地址里有三个下载地址:
2007-01-07 ftp://ftp.wxwindows.org/pub/2.8.1/wxGTK-2.8.1.tar.bz2
2007-01-07 ftp://ftp.wxwidgets.org/pub/2.8.1/wxGTK-2.8.1.tar.bz2
2007-01-07 ftp://biolpc22.york.ac.uk/pub/2.8.1/wxGTK-2.8.1.tar.bz2
我选择了第三个,下载后可获得文件 wxGTK-2.8.1.tar.bz2
我把它保存到了目录 /home/oracle/Downloads/wxgtk 中
输入下面的命令解压:
tar jxf wxGTK-2.8.1.tar.bz2
解压完毕后会有一个目录 wxGTK-2.8.1 进入后执行如下命令:
./configure --enable-xrc --enable-monolithic --enable-unicode
执行这步时出错了,RedHat提示我要安装GTK+
输入这个命令能够安装GTK+
yum install gtk*
查看GTK+安装状况,能够用这个命令:
pkg-config --list-all | grep gtk
我输入这个命令后获得的结果是
gtk+-2.0 GTK+ - GTK+ Graphical UI Library (x11 target)
gtk-doc gtk-doc - API documentation generator
gtk+-x11-2.0 GTK+ - GTK+ Graphical UI Library (x11 target)
gtk+-unix-print-2.0 GTK+ - GTK+ Unix print support
从新运行上面那个配置 wxGTK-2.8.1 的命令
./configure --enable-xrc --enable-monolithic --enable-unicode
就能够顺利执行了,下一步就是输入make命令
make
这个时候又出现错误了:大意是说 struct _GSocket 被typedef了两次,这个结构的不少属性找不到
我参考了这篇博客:http://blog.csdn.net/ssl2009/article/details/7062621
找到文件 src/gtk/gsockgtk.cpp,修改上面include部分
... #include<stdio.h> //用define围起来 #define GSocket GlibGSocket #include <gdk/gdk.h> #include <glib.h> #undef GSocket #include "wx/gsocket.h" #include "wx/unix/gsockunx.h" ...
将 gdk/gdk.h 和 glib.h 的上面添加一个宏 GlibGSocket,在下面再把这个宏取消,就能够顺利编译经过啦
make make install
安装完毕后,输入命令
wx-config --libs
能够看到 -L/usr/local/lib -L/usr/lib64 -lwx_gtk2u-2.8
有-lwx_gtk2u-2.8说明安装成功!安装后要重启系统
4.安装wxWidgets
重启系统后,我发现以前下载的CodeBlock四个rpm文件仍是无法运行,上网查了下,可能还要装wxWidgets吧,抱着试试看的心理,就装了一个:
CSDN上找的资源:http://download.csdn.net/download/chenjack537/4313344
下载后保存到 /home/oracle/Downloads/wxwidgets,解压缩
tar -xzvf wxWidgets-2.8.12.tar.gz
解压后会发现一个新目录 wxWidgets-2.8.12,进入后输入命令安装(安装后重启系统)
./configure --with-gtk --prefix=/usr make make install
5.从新安装wxGTK 2.8.12
上面的工做进行完毕后,4个rpm文件仍是不能正确运行,提示的错误信息依然是找不到so文件
上网查了下,有人说是须要版本2.8.12才能支持CodeBlock(汗!)
只能把以前装的2.8.1版本的wxGTK先卸载了
rm -rf /usr/bin/wx* rm -rf /usr/include/wx* rm -rf /usr/lib/wx* rm -rf /usr/lib/libwx* rm -rf /usr/local/bin/wx* rm -rf /usr/local/include/wx* rm -rf /usr/local/lib/wx* rm -rf /usr/local/lib/libwx* ldconfig
这回我下载了 wxGTK-2.8.12-1.el6.rf.i686.rpm
仍是从CSDN上找的资源:http://download.csdn.net/download/muyazhong/4689639
下载后保存到目录 /home/oracle/Downloads/wxgtk-2.8.12
输入下面的命令安装:
yum install wxGTK-2.8.12-1.el6.rf.i686.rpm
重启电脑后,输入命令
wx-config --version
能够发现版本号从以前的 2.8.1 变成了 2.8.12
此次安装,因为没有像以前那样在configure脚本中输入 --prefix=/usr,所以要进行以下操做:
vi /etc/ld.so.conf
在最后一行添加 /usr/local/lib
保存后退出,用ldconfig命令加载刚才的设定
下面是此时个人Linux对三个命令的反应
命令:wx-config --prefix
输出:/usr
命令:wx-config --libs
输出:-pthread -L/usr/lib64 -lwx_gtk2_richtext-2.9 -lwx_gtk2_aui-2.8 -lwx_gtk2_xrc-2.8 -lwx_gtk2_qu_2.8 -lwx_gtk2_html_2.8 -lwx_gtk2_adv_2.8 -lwx_gtk2_core-2.8 -lwx_base_xml-2.8 -lwx_base_net-2.8 -lwx_base-2.8
命令:which wx-config
输出:/usr/bin/wx-config
6.从新下载CodeBlock
遗憾的是,此次虽然把wxGTK的版本调到了2.8.12,以前下载的4个rpm文件仍是无法运行(==!)
我以为应该换一个包试一试,我又在SourceForge里找了个低一些的CodeBlock版本:
http://ncu.dl.sourceforge.net/sourceforge/codeblocks/codeblocks-8.02-src.tar.bz2
下载后我把它保存到 /home/oracle/Downloads/codeblocks-8 .02
输入命令解压缩文件:
tar jxf codeblocks-8.02-src.tar.bz2
获得目录 codeblocks-8.02,进入后,输入命令:
./configure -prefix=/usr
运行彻底正常,这个时候再用make编译,结果报错!
错误信息说 prefix.cpp 的第396和432行存在语法错误:invalid conversion from 'const char*' to 'char*'
这个时候,就须要对代码进行修改
vim ./src/src/prefix.cpp
到第396行和第432行,原来的语句为
end = strrchr (path, '/');
如今把它们都改成
end = strrchr (const_cast<char*>(path), '/');
这个时候从新make,就能够成功编译经过了
make make install
编译完毕后重启系统。
7.运行CodeBlock
在终端(Terminal)中输入命令
codeblocks
这个时候若是报错:codeblocks: error while loading shared libraries: libcodeblocks.so.0: cannot open shared object file: No such file or directory
以root身份进入到文件 /etc/ld.so.conf 中,将/usr/local/lib加入到文件末尾,并输入命令ldconfig,就能够解决了
第一次进入CodeBlock时,弹出了窗口 Compilers auto-detection,我这里只有 GNU GCC Compiler 是 Detected状态,因而直接把它“Set as default”
这样就能够进入到CodeBlock界面中了
8.一个HelloWorld程序
下面我来建立一个HelloWorld程序
在上方的菜单中选择:File→New→Project
在弹出窗口的左侧列表中选择Files,选择C/C++ Source
语言选择C(在C和C++之间选择),Filename with full path项中选择:/home/oracle/Documents/codeblocktest.c
在这个文件中写下以下代码:
#include <stdio.h> void main() { printf("Hello World!\n"); }
按下Build按钮进行编译
下方的Build log会提示编译情况
Build完毕后,会发现.o文件和可执行文件已经被自动生成好,在命令行中直接就能够运行了。
END