error: argument of type "const void *" is incompatible with parameter of type "const int *"错误解决

今天在编译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 参数可以查看列出 替换组中的可选项,并就使用其中哪一个,征询用户的意见
  • --install [--slave ] 在系统中加入一组替换项,并且设置其优先级
  • --remove 替换组中去除 项.

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. 结尾致谢灰叽大佬@不会积,从来不怕头大,哪怕头大也可以依旧顶风前行,总是能在我无比绝望甚至想要重装系统的时候找到解决的办法.

你可能感兴趣的:(error: argument of type "const void *" is incompatible with parameter of type "const int *"错误解决)