Ubuntu / Raspberry 下切換GCC版本


目前Ubuntu 自帶的GCC版本為4.6,遺憾的是在實際使用時,反而版本越高越好問題越多,所以,一旦遇到編譯問題時最好先檢查你下載的工程里的readme,默認的編譯器版本是否為當前的安裝版本,如果不是,就需注意很可能是版本兼容問題(甚至你可能是第一個遇到此BUG的幸運者),初步調試后即可嘗試降低版本測試。

目前主流gcc版本有兩個,一個是gcc4.4,一個是gcc最新版本(4.6),下文介紹這兩個版本切換和安裝方法。

一、gcc最新版本安裝

root@ubuntu:~# apt-get install build-essential

這里build-essential會自動安裝最新版本的gcc,如果需要指定使用舊版本gcc,只能再次手動安裝。

二、gcc 4.4安裝

gcc 4.4是目前很多工程指定的一個版本,安裝方法如下:

root@ubuntu:~# apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib

三、設置gcc版本切換

1、手動切換

設置后,使用時需手動進行切換選擇。

root@ubuntu:~# ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root 21 Sep 18 04:42 /usr/bin/gcc -> /etc/alternatives/gcc
-rwxr-xr-x 1 root root 224544 Apr 15 22:58 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 306200 Apr 15 19:45 /usr/bin/gcc-4.6
root@ubuntu:~#update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
root@ubuntu:~#update-alternatives --install /usr/bin/g++ gcc /usr/bin/g++-4.4 50

選擇方法(根據編譯器選擇其一):

root@ubuntu:~#update-alternatives --config gcc
root@ubuntu:~#update-alternatives --config g++

參考選擇界面:

root@ubuntu:~# update-alternatives --config g++
There are 2 choices for the alternative g++ (providing /usr/bin/g++).

  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++-4.4   100       auto mode
  1            /usr/bin/g++-4.4   100       manual mode
  2            /usr/bin/g++-4.6   50        manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/g++-4.6 to provide /usr/bin/g++ (g++) in manual mode.
root@ubuntu:~# 

2、設置優先級自動

設置后,系統自動根據優先級選擇,假設要設置gcc4.4優先於gcc4.6,設置方法如下:

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

設置完成后,gcc自動切換為使用4.4版本,因為上面設置4.4優先級高於4.6

四、查看生效的gcc版本

gcc -v

示例輸出:

root@ubuntu:~# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
root@ubuntu:~# 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM