今天下午闲着没事尝试在自己的PC中的CentOS上装一个Code::Blocks,因为是Linux菜鸟折腾了一下午才基本算搞定但依然有疑惑:
在网上各种谷哥度娘最后才发现还是官方的文档最靠谱:看这里。
上面讲的比较详细,下面简单总结一下安装的步骤:
先安装GTK+
yum install gtk+*
Code::Blocks的界面依赖于wxWidgets,所以需要先安装它,至于wxWidgets是什么可以百度一下,具体我也不清楚。只知道wxWidgets是一个跨平台的GUI库,而在Linux上它依赖于GDK+,GDK+就相当于函数库,所以不用担心它在你的系统中肯定是有的。事实上C::B真正使用的wxWidgets是wxGDK,所以我们首先需要安装的其实是wxGDK库,版本要求大于2.8.0,官方文档说libwxGDK-2.8.3有点问题,所以不推荐。
下载wxGDK:到这里。注意选择wxGTK,我下的是wxGTK-2.8.12.tar.gz。
解压缩:
tar zxf wxGTK-2.8.12.tar.gz cd wxGTK-2.8.12
安装:
mkdir build_gtk2_shared_monolithic_unicode cd build_gtk2_shared_monolithic_unicode ../configure --prefix=/opt/wx/2.8 \ --enable-xrc \ --enable-monolithic \ --enable-unicode make su make install exit
安装的路径是/opt/wx/2.8/。
设置环境变量:
export PATH=/usr/bin:/opt/wx/2.8/bin:$PATH
然后运行如下命令:
ldconfig
source /etc/profile
ldconfig命令的作用是让动态链接库为系统所共享,source命令的作用简单来说就是使得配置文件的修改立即生效而不需要重启。
在安装之前还需要先确定一下有没有安装gcc编译器,如果没有yum安装一下,很简单:
yum install gcc-c++
注意:不是yum install g++,我一开始想当然了。下载Code::Blocks(12.11):在这里。我下的是tar包。
解压缩然后依次执行下面的命令:
bootstrap
./bootstrap
bootstrap命令的作用是设置configure脚本及其依赖关系,这个命令只需要执行一次,运行这个命令如果出现下面的错误:
./bootstrap: libtoolize: not found
说明机子上没有安装“libtool”,yum安装下即可:
yum install libtool
可能还会报错:
configure.in:79: warning: macro `AM_OPTIONS_WXCONFIG' not found in library configure.in:80: warning: macro `AM_PATH_WXCONFIG' not found in library configure.in:79: error: possibly undefined macro: AM_OPTIONS_WXCONFIG If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure.in:80: error: possibly undefined macro: AM_PATH_WXCONFIG
将wxGTK-2.8.12下的wxwin.m4复制到/usr/share/aclocal
cp ../wxwin.m4 /usr/share/aclocal
configure
./configure --with-wx-config=/opt/wx/2.8/bin/wx-config
注意:如果如果wxGDK不是安装在默认的路径这里需要--with-wx-config指定,否则make过程中会提示有error。
接下来安装等待即可:
make make install
等安装完成后,就可以在Application中找到C::B的图标了。
但是我安装后点它却发现启动不起来,通过终端命令启动发现错误信息如下:
意思是找不到libwx_gtk2u-2.8.s0.0这个动态链接库,解决方法是设置LD_LIBRARY_PATH变量:
export LD_LIBRARY_PATH =/opt/wx/2.8/lib/
这种方式是临时的设置环境变量,关闭shell就会失效,需要永久的设置环境变量参看这里这里,修改/etc/profile文件,加入下面这行:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/wx/2.8/lib"
source /etc/profile
LD_LIBRARY_PATH这个环境变量的作用是让其他程序找到第三方的动态连接库。设置后就没可以通过命令行启动C::B了。
疑问:但是奇怪的是上面这个命令我是在root权限下进行的,按照这里所说这种配置方法是对所有用户都生效的,但是我的实际情况是必须切换到root权限下才能启动C::B而且必须通过su -来进行切换(关于su和su-的区别看这http://www.ha97.com/4001.html。)不知道哪位同学知道能告知一下,我再去学习学习。
纠错:上面的疑惑我重启下电脑都没了,实在不好意思(竟然发到首页去了,本打算多请教请教),但是通过一下午折腾对linux命令又多熟悉了点,比如su和su-的区别(这里)以前还真没注意过。