centos7安装部署gStore以及排坑的心酸过程

2022-06-01 00:00:00 执行 版本 命令 编译 安装

Gstore 系统(也称作 gStore )是一个用于管理大型图结构数据的图数据库引擎,是一个针对 Linux 操作系统的开源软件

下述步骤为完整且成功安装 gstore的过程。 (更新一下,简化安装步骤)

1 安装git
sudo yum install git 中间过程全选 “y”

2 获取gstore源码
git clone https://gitee.com/PKUMOD/gStore.git #gitee(码云) 国内下载速度更快

注意 !坑来了(按照官方文档,在gStore/script/setup/setup_centos.sh自动安装相关依赖,亲身实践后有问题)

3 安装高版本gcc
关于gcc版本问题

官方推荐使用5.0以上 ,但是自动安装步骤完成后的版本同样低于5.0,所以在执行完自动安装脚本后,应该手动升级,否则编译gstore会报错。

官方文档
1).下载gcc 5.0以上版本 (这里使用5.4.0)

先查看gcc版本如果是5.0以上则不用更新


gcc --version

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.gz

tar xvf gcc-5.4.0.tar.gz

cd gcc-5.4.0

./contrib/download_prerequisites

cd ..

mkdir gcc-build-5.4.0

cd gcc-build-5.4.0

../gcc-5.4.0/configure --prefix=/opt/gcc-5.4.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib

sudo make -j4 #允许4个编译命令同时执行,加速编译过程

sudo make install
make -j4编译时间比较长,4G内存,4核处理器40分钟编译完。

3).修改gcc默认版本

#prefix 假设gcc 和 g++ 安装在了/prefix/bin 路径下,执行以下命令:
export PATH=/prefix:$PATH

# 假设 5.0 以上版本的 gcc 和 g++ 动态链接库在/prefix/lib路径下,则需要执行以下命令:
export LD_LIBRARY_PATH=/prefix/lib:$LD_LIBRARY_PATH
上述步骤执行完后 进入/usr/bin下

使用 find ./ -name "*gcc*", find ./ -name "*g++*", find ./ -name "*cpp*" ,find ./ -name "*c++*",命令查询出该路径下所有的link。mv重命名所有link。

使用 update-alternatives命令重新生成新的link ,"--install" 参数,“ /usr/bin/c++ ” link所在地址,“c++” link名称,“/opt/gcc-5.4.0/bin/x86_64-unknown-linux-gnu-c++”gcc编译过的路径。"40" 优先使用高版本。

update-alternatives --install /usr/bin/c++ c++ /opt/gcc-5.4.0/bin/x86_64-unknown-linux-gnu-c++ 40

(也可以直接复制 “ /opt/gcc-5.4.0/bin/* 到 /usr/bin/ 下。”)

后使用 g++ --version, gcc --version 查看版本



(手动编译费时费力 )

***简单更新gcc版本的办法 推荐安装7 ,7安装gstore没问题
步:安装centos-release-scl
sudo yum install centos-release-scl

第二步:安装devtoolset,注意,如果想安装7.版本的,就改成devtoolset-7-gcc,以此类推,默认安装的devtoolset是在 /opt/rh 目录下的
sudo yum install devtoolset-7-gcc*
第三步:激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本。
scl enable devtoolset-7 bash
这条激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本

第四步:启动
每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行


source ./enable

所以要想切换到某个版本,只需要执行


source /opt/rh/devtoolset-7/enable
可以将对应版本的切换命令写个shell文件放在配了环境变量的目录下,需要时随时切换,或者开机自启

第五步:直接替换旧的gcc
旧的gcc是运行的 /usr/bin/gcc,所以将该目录下的gcc/g++替换为刚安装的新版本gcc软连接,免得每次enable

mv /usr/bin/gcc /usr/bin/gcc-4.8.5

ln -s /opt/rh/devtoolset-7/root/bin/gcc /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++-4.8.5

ln -s /opt/rh/devtoolset-7/root/bin/g++ /usr/bin/g++

gcc --version

g++ --version
yum install -y make ---如果是纯净系统 需要先安装make 如果不是 ,一般都会自带。

4. 安装boost 1.57.0
(亲身操作使用官方自动安装脚本未能安装成功,显示地址连接失败。)
可以参考我的另一篇文章去官方下载https://blog.csdn.net/m0_37101308/article/details/121952309?spm=1001.2014.3001.5501

也可以直接去https://download.csdn.net/download/m0_37101308/63922261 下载tar包。

安装过程如下

tar -xzvf boost_1_57_0.tar.gz
cd boost_1_57_0
./bootstrap.sh
sudo ./b2
sudo ./b2 install
默认安装头文件/usr/local/include/boost目录下,库文件在/usr/local/lib目录下。

在 /etc/ld.so.conf 中加入 /usr/local/lib 这一行,保存之后,再运行:/sbin/ldconfig -v 更新一下配置即可。

5. cmake 安装
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz

tar -xvf cmake-3.6.2.tar.gz && cd cmake-3.6.2/

./bootstrap

make

make install
6 . 安装gstore需要的以来环境
yum install -y java-1.8.0-openjdk-devel

yum install -y readline readline-devel

yum install -y libcurl-devel

yum install pkgconfig.x86_64

yum install libuuid-devel



7. 安装gStore
cd gStore
make pre #进度到 顺利完成
make #若编译顺利完成,后会出现 Compilation ends successfully! 结果
bin/ginit #初始化,如果顺利完成,后会出现 system.db is built successfully! 结果
遇到的问题*****
(1) in/ginit: error while loading shared libraries: libboost_thread.so.1.57.0: cannot open shared object file: No such file or directory

找不到boost编译后包,是因为没有在/etc/ld.so.conf 中添加 boost的编译lib地址 “ /usr/local/lib ”

(2) 执行到 bin/ginit 会报错显示 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

出现这种问题是因为安装了 gcc5.4.0,但未建立软连接

cd /usr/lib64
ll stdlibc++*

以看到当前libstdc++so.6指向19的版本,接下来把刚刚的高版本的复制到这里并重建软链即可

删除旧的软链接

rm libstdc++.so.6

重新建立软链接 (opt是我编译 gcc的路径)

ln -s /opt/gcc-5.4.0/lib64/libstdc++.so.6.0.21 libstdc++.so.6

再执行bin/ginit 成功安装显示如下。

QueryCache cleared
Query time used (minus parsing): 0ms.
Total time used: 1ms.
Insert data result:update num : 1
system.db init successfully! Used 1052 ms
call the delete function for ResultSet


(3) /opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lcurl
collect2: error: ld returned 1 exit status
make: *** [bin/gexport] Error 1

找不到curl的 软链接,查看curl是否已安装,如果没有,则手动安装

wget https://curl.haxx.se/download/curl-7.55.1.tar.gz

tar -xzvf curl-7.55.1.tar.gz

cd curl-7.55.1

./configure

make

make install
手动安装wget 连接超时
curl downloads
https://curl.se/download/

打开链接手动下载。
————————————————
版权声明:本文为CSDN博主「古·狼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37101308/article/details/121953311

相关文章