今天在编译caffe2时,遇到了以下问题:
"/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512vlintrin.h(10907): error: argument of type "const void *" is incompatible with parameter of type "const int *"
输入gcc -v查看gcc版本,发现是gcc 5.5.0.网上有人说是gcc版本问题,因此就下载安装了gcc5.4.0
安装gcc5.4.0
1.下载gcc源码
下载地址
选择gcc-5.4.0.tar.gz
2. 进入下载目录并解压
sudo tar -zxvf gcc-5.4.0.tar.gz
3. 下载编译所需依赖项
cd gcc-5.4.0
sudo ./contrib/download_prerequisites
cd ..
4. 建立编译输出目录
mkdir gcc-build-5.4.0
5. 生成makefile文件
cd gcc-build-5.4.0
sudo ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
6. 使用8核进行编译.此过程所需时间较长,最好不要中断
sudo make -j8
7. 安装
sudo make install
再次检查gcc和g++版本,发现已经切换为5.4.0了
然而,再次编译caffe2,依然会报错.
检查gcc5.4.0安装位置,发现是在/usr/local/bin下;但是在编译caffe2时,gcc位置依然为/usr/bin.因此,还需要设置gcc的默认版本
使用update-alternatives设置gcc默认版本
update-alternatives是linux系统自带的专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本.其常用命令有:
- --config <name>参数可以查看列出 <name> 替换组中的可选项,并就使用其中哪一个,征询用户的意见
- --install <link> <name> <path> <priority>[--slave <link> <name> <path>] 在系统中加入一组替换项,并且设置其优先级
- --remove <name> <path> 从 <name> 替换组中去除 <path> 项.
1. 查看gcc链接指向
sudo update-alternatives --config gcc
得到
链接组只有一个候选链接,gcc-5.
输入gcc-5 -v查看版本,发现还是gcc5.5.0.
2. 将/usr/local/bin/gcc加入gcc链接组
设置/usr/local/bin下的gcc优先级为100,将/usr/bin/gcc指向/usr/local/bin/gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100
再次输入sudo update-alternatives --config gcc,可以看到,此时已经有两个候选链接,并且/usr/local/bin/gcc优先级更高
g++不需要再次设置了.设置完成gcc后,还需要设置c++
sudo update-alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++ 100
完成
ps. 结尾致谢灰叽大佬@不会积,从来不怕头大,哪怕头大也可以依旧顶风前行,总是能在我无比绝望甚至想要重装系统的时候找到解决的办法.
网友评论