前言:源码编译安装同样适用于X86、以及其他架构服务器,能最大程度上按照服务器的配置生成合适的编译包,当然也有其他安装方式,比如下载对应rpm包但是依赖会很多,特别是离线环境或者内网下很难去处理那些依赖关系还需要下载一大堆的依赖rpm包,或者已经编译好的包,如果采用已经编译好的包进行安装的话,因为银河麒麟是基于centos7二次开发的(arm64),可以找对应的编译包,推荐源码编译安装

源码下载redis-6.0.9.tar.gz解压编译安装

tar xvzf redis-6.0.9.tar.gz
cd redis-6.0.9
make

编译之前确认gcc安装且版本不能太低,redis对应gcc版本网上都可以直接查得到

gcc -version
yum install gcc

库文件链接错误,上面的步骤都做完后,还可能遇到编译不通过的情况:
"/usr/bin/ld: cannot find -latomic"

latomic 代表的是 libatomic.so,也即是在编译的过程中,需要 libatomic.so 库,而系统又找不到这个库;

解决方法是手动找到这个库,可能存在如下几种情况:
1、系统中没有安装依赖库 libatomic.so,通过执行 find / -name "libatomic.so* " 来确认。如果没有的话,在软件源中搜索相关的软件包:

yum list |grep libatomic

通过执行下列命令安装相关依赖。

yum -y install libatomic libatomic_ops-devel

2、系统中没有 libatomic.so 这个库,但是找到类似 libatomic.so.1.2.0 这种带版本号的库,通过执行 find / -name "libatomic.so*"来确认:

3、如若以上均找不到ibatomic.so,又是离线情况下,只能下载libatomic-11.2.1-1.fc35.aarch64.rpm进行离线安装
下载地址:libatomic-11.2.1-1.fc35.aarch64.rpm

rpm -ivh libatomic-11.2.1-1.fc35.aarch64.rpm

推荐一个rpm包下载的网站,aarch64,x86等架构的rpm包都可以到www.rpmfind.net查找下载

最后:使用软链接的方法将依赖库libatomic.so链接到正确路径,执行如下命令:

ln -s /usr/lib64/libatomic.so.1.2.0 /usr/lib/libatomic.so

再执行 make 编译,问题解决,编译通过。
这时在 src 目录中能够看到已经编译好的 redis 可执行文件,
然后进行安装

make install

注:当然这只是我在离线环境编译安装过程中遇到的问题,实际安装过程中存在或多或少其他的问题,可以通过centos7环境去查找这些问题的解决方案

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐