最近在折腾这个,安装pika,网上文章没看到靠谱的很多都说下载最新的glog,gflags这样能编译过么。说到都是泪,遇到问题很多,而且也不容易解决,没人提供帮助,就是在pika群里问也没多少管你。通过摸索填坑终于爬出出来了。要想少爬坑,就要遵循以下原则。
1、环境:centos6
安装:
yum install gcc-c++
执行后默认安装的Package gcc-c++-4.4.7-23.el6.x86_64 already installed and latest version
这个版本太低t太高不行(不然要改代码才行,想不动代码就编译好),gcc版本的问题折腾我太久了,pika群里说的gcc7.3,5.5 最新版 都不靠谱,编译安装一次gcc版本 一个多小时就没了。最早我用gcc-10.2.0,然后就5.5,7.3都试过 后面 编译pika就是一堆错编译不通过。
通过我一天的折腾 就是4.8.x , 4.9.x 都可以最终我用的最终4.8.5 ,4.9.4
下载地址:ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc
安装步骤
1、下载 gcc
wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz
解压:tar -zxvf gcc-4.8.5.tar.gz
cd gcc-4.8.5
下载组件
./contrib/download_prerequisites
下载完成开始编译安装gcc
./configure --prefix=/usr/local/lib/gcc-4.8.5 --enable-checking=release --enable-languages=c,c++ --disable-multilib
开始编译
make -j4
j后面的数字可以根据你的的cpu核心数来少于等于就可以 加快编译速度。
安装
make install
切换到新的gcc
vi ~/.bash_profile
## gnu gcc
export GCC_HOME=/usr/local/gcc-4.9.4
export PATH=$GCC_HOME/bin:$PATH
export MANPATH=$GCC_HOME/share/man
export CPATH=$GCC_HOME/include
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64
export LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64
保存
:wq
启用
source ~/.bash_profile
gcc -v
能看到下面信息说明就切换过来了
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.8.5/libexec/gcc/x86_64-unknown-linux-gnu/4.8.5/lto-wrapper
组件:
yum install gflags-devel snappy-devel glog-devel protobuf-devel
可能会显示下面的
No package glog-devel available.
centos6 可能找不到glog的包 只有自己源码安装 版本很重要 pika自带的版本是glog-0.3.3 ,对应的依赖gflags需要2.1.2或者2.1.1 我尝试过glog和 gflags git最新的版本 编译Pika 一堆错,很坑人,浪费一天的时间,网上抄文 大多都是git新的版本,坑死还不知道。 我最后发现 pika里面依赖带的是0.3.3,找那个时期的gflags版本,最后 顺利编译没啥毛病。
编译gflags前要升级安装 cmake gflags对cmake版本有要求的
wget https://cmake.org/files/v3.18/cmake-3.18.4.tar.gz
安装cmake需要的组件
yum install build-essential libssl-dev
tar -zxvf cmake-3.18.4.tar.gz
cd cmake-3.18.4
./bootstrap
执行完成提示
CMake has bootstrapped. Now run gmake.
gmake
maek install
cmake -version
显示cmake version 3.18.4就对了不然要做相应的设置。
安装 gflags 2.1.2 gflags 2.1.1也可以的 最新的肯定是有问题的我试过。
可以去github.com下载
也可以到我的传的
https://download.csdn.net/download/clive_hua/19592329
要求下载包,解压
tar -zxvf gflags-2.1.2.tar.gz
cd gflags-2.1.2
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=google -G "Unix Makefiles" ../
make
make install
ldconfig
可选择的lib
yum install zlib-devel lz4-devel libzstd-devel
现在可以拉pika的代码下来编译了
源码地址: https://github.com/OpenAtomFoundation/pika
直接去github 官网git clone 要很久 可能要几个小时 中途可能断 连断几次就要重新来, 好不容易拉代码成功,
最后我找到下载很快的方式。去镜像站下
clone https://hub.fastgit.org/OpenAtomFoundation/pika.git
有了代码就开始编译了
在编译前还要更改依赖包的地址,也改成去镜像站下 这样速度超级快。
cd pika
vi .gitmodules
[submodule "third/glog"]
path = third/glog
url = https://hub.fastgit.org/Qihoo360/glog.git
[submodule "third/slash"]
path = third/slash
url = https://hub.fastgit.org/Qihoo360/slash.git
[submodule "third/rocksdb"]
path = third/rocksdb
url = https://hub.fastgit.org/facebook/rocksdb.git
[submodule "third/blackwidow"]
path = third/blackwidow
url = https://hub.fastgit.org/Qihoo360/blackwidow.git
[submodule "third/pink"]
path = third/pink
url =https://hub.fastgit.org/Qihoo360/pink.git
保存。
开始编译pika
make
就开始快速拉依赖组件。
拉完代码最好先去 编译安装glog 不然后会出现找不到glog.so的问题、
cd third/glog/
./configure
make & make install
最后在编译 make就没啥问题。
我被坑的重点 就是gcc版本问题,试试好几个版本想不改代码下编译 目前我试到的就是4.8 4.9可以其他的一堆错。 gflags 需要2.1.x版本,centos yum安装一般情况下没glog的包了。这搞了我两天多的时间!
centos7 安装pika也很坑下次再说,snappy的版本和流程问题,来回折腾了一天就这snappy。