一 安裝gcc-4.1.0
在redhat 9.0下,用gcc-3.2.2編譯庫libusb-0.9.3時出現錯誤,對gcc擴充: -Wno-pointer-sign 和-fvisibility=hidden不支援,換用交叉編譯器arm-linux-gcc3.4.1可編譯通過。為徹底解決問題,決定升級gcc。
1 下載gcc4.1.0.tar.bz2
#tar jxf gcc-4.1.0.tar.bz2
在解壓後的檔案夾/gcc-4.1.0/INSTALL下有詳細的安裝說明,不過說的很羅嗦,安裝時只需要指定路徑即可,在源碼樹中運行'configure'是不必要的同時也是不好的.一個由'configure'產生的良好的'Makefile'可以構築源碼屬於另一棵樹的軟體包.在一個獨立於源碼的樹中構築派生的檔案的好處是很明顯的:派生的檔案,如目標檔案,會淩亂的散佈於源碼樹.這也使在另一個不同的系統或用不同的配置選項構築同樣的目標檔案非常困難.建議使用三棵樹:一棵源碼樹(source tree),一棵構築樹(build tree),一棵安裝樹(install tree).,方法是在建立的檔案夾下編譯:
#mkdir gcc-build //gcc-build和gcc-4.1.0在同一檔案夾下
#cd gcc-build
2 安裝
編譯,為了仍可使用gcc3.2.2,將 gcc-4.1.0安裝到/usr/local/gcc-4.1.0:
# ../gcc-4.1.0/configure --prefix=/usr/local/gcc-4.1.0&& make && make install
......
近1小時的等待
3 設定
gcc3.2.2的安裝路徑在/usr/bin,將此檔案夾下的gcc,g++,gcj改名。
#mv gcc gcc322
#mv g++ g++322
#mv gcj gcj322
重新串連gcc,g++,gcj
#ln -s /usr/local/gcc4.1.0/gcc gcc
#ln -s /usr/local/gcc4.1.0/g++ g++
#ln -s /usr/local/gcc4.1.0/gcj gcj
4 添加庫路徑
將gcc庫的路徑添加到環境變數中,在/etc/profile中增加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc4.1.0/lib
5 刪除gcc-build
二 安裝gdb6.5
gcc-build中包含gcc4.1.0編譯過程中產生的檔案,gcc安裝成功後,可直接將其刪除
系統安裝的gdb為5.3版本,對gcc4.1.0編譯的可執行檔不能完全相容。print命令只可顯示全域變數值,不可顯示局部變數值,升級到gdb6.5後,問題解決。
具體方法同上
1 下載gdb-6.5.tar.bz2
#tar jxf gdb-6.5.tar.bz2
#mkdir gdb-build
2 安裝
#../gdb-6.5/configure --prefix=/usr/local/gdb-6.5 && make && make install
3 設定
#cd /usr/bin
#mv gdb gdb5.3
#ln -s /usr/local/gdb-6.5/bin/gdb gdb