查看系统的gcc与g++版本命令:
gcc -v
g++ -v

安装4.9版本的gcc和g++:
第一步:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

第二步:
apt-get install gcc-4.9 gcc-4.9-multilib g++-4.9 g++-4.9-multilib

gcc版本共存的配置:
#由于需要的版本为低版本,所以我将低版本的优先级设的较高,后面的‘20’和‘10’代表优先级,他们只有相对大小,没有绝对的规定
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 
#讲系统中原本的高版本设为较低优先级
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10

g++的多版本共存配置:
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10

c版本切换操作命令:
gcc版本切换
update-alternatives --config gcc
g++版本切换
update-alternatives --config g++

删除配置表中命令:
update-alternatives --remove gcc /usr/bin/gcc-4.9
update-alternatives --remove g++ /usr/bin/g++-4.9

gcc源码下载:
ftp://ftp.gnu.org/pub/gnu/gcc/

交叉编译器

linaro官网下载: ​​https://releases.linaro.org/components/toolchain/gcc-linaro/​

交叉编译器介绍
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。

这些交叉编译链的命名规则似乎是通用的,有一定的规则:

arch-core-kernel-system

arch: 用于哪个目标平台。
core: 使用的是哪个CPU Core,如Cortex A8,但是这一组命名好像比较灵活,在其它厂家提供的交叉编译链中,有以厂家名称命名的,也有以开发板命名的,或者直接是none或cross的。
kernel: 所运行的OS,见过的有Linux,uclinux,bare(无OS)。
systen:交叉编译链所选择的库函数和目标映像的规范,如gnu,gnueabi等。其中gnu等价于glibc+oabi;gnueabi等价于glibc+eabi。

关于linux-g++(或g++)和arm-linux-g++:
arm-linux-g++是交叉编译工具,用于arm板程序设计。对于交叉编译,我的理解就是在宿主机上设计出arm板上的程序,如果不使用qvfb工具,用其编译的二进制可执行文件在pc机上是无法运行的。
linux-g++是编译在pc端可运行的程序,其编译出的二进制可执行文件同样无法在arm板上运行,会提示无法执行二进制文件。