歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.04 gcc g++ 4.4降級到4.3

Ubuntu 10.04 gcc g++ 4.4降級到4.3

日期:2017/2/28 16:35:04   编辑:Linux教程

文章標題 : Ubuntu10.04 gcc g++4.4降級4.3的問題


我依照以下方法,卻得到ln: creating hard link `gcc' => `/usr/bin/gcc-4.3': Invalid cross-device link 請問是什麼回事呢?

將gcc-4.4降級成gcc-4.3 具體操作: sudo apt-get install gcc-4.3(安裝gcc-4.3) sudo apt-get install g++-4.3(安裝g++-4.3)sudo apt-get install g++-4.3-multilib (安裝g++-4.3-multilib) 安裝完4.3版本後,執行gcc --version後會發現版本仍然是4.4,因為gcc已經和4.4版本進行了鏈接,因此需要對gcc重新進行鏈接 具體操作: sudo ln -f /usr/bin/gcc-4.3 gcc sudo ln -f/usr/bin/g++-4.3 g++ 這樣就可以用4.3版本的gcc和g++將原來的覆蓋掉,重新進入Android源碼目錄執行make就可以正常編譯
【或者可以安轉gcc依賴包 apt-get install build-essential】
請大家幫幫忙

文章標題 : Re: Ubuntu10.04 gcc g++4.4降級4.3的問題

在我的系統上
ls -l /usr/bin/gcc
lrwxrwxrwx 1 root root 7 2009-11-10 20:40 /usr/bin/gcc -> gcc-4.4
意思是/usr/bin/gcc是/usr/bin/gcc-4.4的 soft link,不是hard link,目前我常用的都是soft link,用法是ln -s file1 file2,然後ls -l file2查看。
你的情況應該是
cd /usr/bin
sudo ln -sf cpp-4.3 cpp
sudo ln -sf gcc-4.3 gcc
sudo ln -sf g++-4.3 g++
hard link據說不支持在不同分區之間連接文件(你的/home和/在不同分區?),soft link支持。
你的命令sudo ln -f /usr/bin/gcc-4.3 gcc似乎是把/usr/bin/gcc做個hard link到當前目錄下的文件gcc。
另外系統默認版本的gcc最好不要改,要改也得是同一版本,比如gcc 4.3.0改為gcc 4.3.2或gcc 4.4.0到gcc 4.4.4。從gcc 4.4改到gcc 4.3是有風險的。
有個辦法使用非系統默認版本的gcc,就是自己編譯gcc並安裝到/opt/gcc目錄下去,不用多少時間,15分鐘就夠了(Intel E2140,1GB RAM)。
如果你熟悉gcc的編譯,這段不用看。編譯前把gcc-4.3的包全部卸掉,並把gcc,cpp,g++這幾個提供soft link到gcc-4.4的包重新裝一遍。
安裝編譯gcc的依賴包gmp,mpfr,cloog-ppl,mpc,libelf,注意都要帶devel或dev字樣的包。
到http://gcc.cybermirror.org/releases/gcc-4.3.4/
下載源碼
gcc- core*.tar.bz2是c編譯器
gcc-fortran*.tar.bz2是fortran編譯器
gcc- g++*.tar.bz2是g++編譯器
gcc-objc*.tar.bz2是objective c編譯器
一般人用到的就c,c++ 而已
mkdir ~/build
下載到home下的build目錄

http://gcc.cybermirror.org/releases/gcc-4.3.4/gcc-core-4.3.4.tar.bz2

http://gcc.cybermirror.org/releases/gcc-4.3.4/gcc-g++-4.3.4.tar.bz2

cd ~/build
tar jxf gcc-core-4.3.4.tar.bz2
tar jxf gcc-g++-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
然後
gcc -v 2> build-config.txt
打開build-config.txt
開 始修改
比如我的是

代碼:
Using built-in specs.
Target: i586-SUSE-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++ --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.4 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.4 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=i586-suse-linux
Thread model: posix
gcc version 4.4.4 (SUSE Linux)


改成

代 碼:
../configure \
--prefix=/opt/gcc \
--enable-languages=c,c++ \
--enable-checking=release \
--enable-ssp \
--disable-libssp \
--with-bugurl=http://bugs.opensuse.org/ \
--with-pkgversion='SUSE Linux' \
--disable-libgcj --disable-libmudflap \
--with-system-zlib \
--enable-__cxa_atexit \
--enable-libstdcxx-allocator=new \
--disable-libstdcxx-pch \
--enable-version-specific-runtime-libs \
--program-suffix=-4.4 \
--enable-linux-futex \
--without-system-libunwind \
--with-arch-32=i586 \
--with-tune=generic \
--build=i586-suse-linux \
--disable-bootstrap


也就是把頭尾不要,提到/usr和/lib目錄的行全不要,--program-suffix那行也不要,分行,再加一行--disable-bootstrap。我的這段

代碼:
../configure
...


僅 供參考,具體還是要你自己改你自己的build-config.txt
現在已經在~/build/gcc-4.3.4/build目錄了
把 改好的build-config.txt的內容復制下來並運行,我的是

代碼:
../configure \
--prefix=/opt/gcc \
--enable-languages=c,c++ \
--enable-checking=release \
--enable-ssp \
--disable-libssp \
--with-bugurl=http://bugs.opensuse.org/ \
--with-pkgversion='SUSE Linux' \
--disable-libgcj --disable-libmudflap \
--with-system-zlib \
--enable-__cxa_atexit \
--enable-libstdcxx-allocator=new \
--disable-libstdcxx-pch \
--enable-version-specific-runtime-libs \
--enable-linux-futex \
--without-system-libunwind \
--with-arch-32=i586 \
--with-tune=generic \
--build=i586-suse-linux \
--disable-bootstrap


然後
make -jN,cpu有幾個核N就填幾
最後
sudo make install
可選步驟
cd /opt/gcc/libexec/gcc/*/*
sudo strip -sv cc1*

最後寫個腳本gcc43-env.sh放到~/bin目錄,內容如下

代碼:
#!/bin/sh
export PATH=/opt/gcc/bin:$PATH


你要使用gcc-4.3只用
source gcc43-env.sh
就行了。

Copyright © Linux教程網 All Rights Reserved