在安装Facebook开源图像识别软件时,用到了各种依赖,而且依赖是嵌套依赖,头都大了,我发现如果把安装MultiPathNet的所有东西都写在一起,会非常长,所以我还是分开写吧。
这里是一个比较独立的部分,是在安装Folly时出现的,编译Folly时,会出现如下错误提示:
In file included from ./../folly/String.h:40:0, from ./../folly/Format.h:27, from detail/CacheLocality.cpp:28: ./../folly/FBVector.h: In lambda function: ./../folly/FBVector.h:1432:49: error: parameter packs not expanded with '...': M_construct(start, std::forward(args)...); ^ ./../folly/FBVector.h:1432:49: note: 'args'
根据github上的说明,需要升级gcc到4.9.3版本才能解决该问题,而CentOS7软件库中的版本是4.8.3,所以需要手动升级。
升级教程来源于《centos6.5升级gcc到4.9》。
cd /usr/local/src/
如果没有需要新建:mkdir -p /usr/local/src/
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.3/gcc-4.9.3.tar.gz
gcc的下载镜像很多,我找了一个日本大学的,速度还行。
yum install -y glibc-static libstdc++-static
yum install gcc gcc-c++
tar -zxvf gcc-4.9.3.tar.gz
./contrib/download_prerequisites
这一步是为了下载必须的文件。
mkdir -p /usr/local/build/gcc-4.9.3
cd /usr/local/build/gcc-4.9.3/
/usr/local/src/gcc-4.9.3/gcc-4.9.3/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make
make install
gcc -v
这时候可能看到的还是老版本,需要断开ssh重连,或者重启即可。
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.9.3/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /usr/local/src/gcc-4.9.3/gcc-4.9.3/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.9.3 (GCC)
在有些情况下,程序make的时候还是去/usr/bin下面找,而不是去/usr/local/bin下面找,导致仍然失败的情况,解决方法:
cd /usr/bin/
mv gcc gcc-old
mv g++ g++-old
mv c++ c++-old
ls -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/bin/g++ /usr/bin/g++
ln -s /usr/local/bin/c++ /usr/bin/c++
结束。
make的时间非常长,长到我这篇文章就是在make的时候写的,看到满屏幕乱飞的代码我都震惊了。
同时,当你看到这些乱飞的代码,发现他们都是开源免费的之后,你就知道开源是多么的伟大!
这是干什么的呢,安装很麻烦的话,可以考虑看看有没有docker镜像,一个docker命令就搞定了