这两天在安装SingleR 包的时候总是出现编译问题,折腾了一天发现该包是依赖c++14进行编译的,课题组的服务器中的g++版本低,只支持c++11编译。
一、问题描述
报错内容:其实还有一个最初的报错,但当时忘记截图了。。。。。。
其实是这个问题我们可以在最初源码安装R时就发现,在make install编译完成后会展示一个支持环境,如下图:
如果系统不支持的话 C++14 compiler后面会是空的
二、问题解决
1、我的当前环境中gcc和g++的已有版本:
gcc版本:gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
g++版本:g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
2、方法:升级gcc和g++版本为5.2.0
操作步骤:
cd /usr/local/src
# 下载gcc5.2.0源码
wget http://ftp.gnu.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
tar -jxvf gcc-5.2.0.tar.bz2
# 进入gcc目录安装
cd gcc-5.2.0
# 下载某些依赖包
./contrib/download_prerequisites
# 创建bulid文件夹
mkdir build
cd build
../configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-multilib
# 编译安装,此过程耗时较长
make -j 4 && make install
# 修改软连接
mv /usr/bin/gcc /usr/bin/gcc_bak
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++_bak
ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
# 查看升级后版本
gcc --verson
g++ --version
另外,为什么不直接使用yum update安装升级呢,因为我也试过这种方法只能升级到4.8.5,无法升级到5.0版本,所以还是老老实实手动升级吧。
此外 在编译的时候还会遇到如下警告
configure: WARNING: neither inconsolata.sty nor zi4.sty found: PDF vignettes and package manuals will not be rendered optimally
解决方法
wget http://mirrors.ctan.org/fonts/inconsolata.zip
unzip inconsolata.zip
cd inconsolata/
sudo cp -Rfp * /usr/share/texmf/
sudo mktexlsr