首页 > 代码库 > Red Hat 上安装 CodeBlocks 笔记

Red Hat 上安装 CodeBlocks 笔记

今天想在我的RedHat上装个CodeBlock,费了挺多时间的。装到要吃晚饭的时候终于成功了,于是决定写篇文章记录下我的安装过程。

因为安装过程非常“曲折”,所以这篇文章也记录了很多我试错的过程,很多步骤在后面看来都可以算作废步骤。如果希望看到最精简的解决方案,可以求助其他大牛的安装过程。这篇文章只相当于我今天在我的计算机上安装CodeBlock的一个笔记(惭愧~~~ :-P)。

1.我的环境

我是在RedHat上安装的CodeBlock,版本号可以用下面这个命令查询

cat /etc/redhat-release

查询出来的版本信息为:

Red Hat Enterprise Linux Server release 6.4 (Santiago)

我在虚拟机里安装的是64位的RedHat,关于RedHat是32位还是64位,可以用命令

arch

查出来,我查出来的是x86_64,说明是64位的

2.下载CodeBlock

登陆到CodeBlock官方网站的下载页面 http://www.codeblocks.org/downloads

登陆后在左侧树形菜单中找到 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

Red Hat 上安装 CodeBlocks 笔记