成功编译ELL对gcc版本有要求,这而这一点在ELL的文档中并没有写。
gcc版本太低了是不行的,那么什么算版本低?反正我的gcc 4.8.4是不work的——使用低版本的gcc,你也可以照着文档完成很多步骤,但是到最后某一步,一定会遇到由于gcc版本低导致的问题,并且还没有直观的错误提示,查找问题源头可能会浪费你很多时间。
我在ELL的issue列表中看到有人说用gcc 6.3是OK的。但是,在Ubuntu 14.04上通过编译源码安装gcc 6并不那么容易。通过Google,我找到了如下这个很棒的答案,只需要在命令行粘贴如下命令再回车,就安装上了gcc 6,实在太爽:
sudo apt-get update && \ sudo apt-get install build-essential software-properties-common -y && \ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ sudo apt-get update && \ sudo apt-get install gcc-snapshot -y && \ sudo apt-get update && \ sudo apt-get install gcc-6 g++-6 -y && \ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && \ sudo apt-get install gcc-4.8 g++-4.8 -y && \ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;
文章来源:https://www.codelast.com/
安装完成后,使用如下命令选择gcc版本:
sudo update-alternatives --config gcc
会打印出如下提示:
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).Selection Path Priority Status------------------------------------------------------------* 0 /usr/bin/gcc-6 60 auto mode1 /usr/bin/gcc-4.8 60 manual mode2 /usr/bin/gcc-6 60 manual mode
直接回车就是使用默认的gcc 6.3。
此时,再用 gcc -v 命令检查一下版本,我的输出如下:
Using built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapperTarget: x86_64-linux-gnuConfigured with: ...(内容很长,省略)Thread model: posixgcc version 6.3.0 20170519 (Ubuntu/Linaro 6.3.0-18ubuntu2~14.04)