今天想在個人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