主要是有一个老服务器 CPU 是 HI1616,这个 CPU 是比较老的 ARM 架构,切换了多个服务器版本都无法安装官方编译的 openGauss 数据库。安装官方版本类似报错:
[fhy@RH2288 simpleInstall]$ sh install.sh -w "****"
[step 1]: check parameter
[step 2]: check install env and os setting
[step 3]: change_gausshome_owner
[step 4]: set environment variables
[step 6]: init datanode
no data was returned by command ""/home/fhy/openGauss/bin/gaussdb" -V"
The program "gaussdb" is needed by gs_initdb but was not found in the
same directory as "/home/fhy/openGauss/bin/gs_initdb".
Check your installation.
[step 7]: start datanode
[2025-08-26 17:10:41.050][7344][][gs_ctl]: gs_ctl started,datadir is /home/fhy/openGauss/data/single_node
[2025-08-26 17:10:41.050][7344][][gs_ctl]: can't create lock file "/home/fhy/openGauss/data/single_node/pg_ctl.lock" : 没有那个文件或目录 import sql file
Would you like to create a demo database (yes/no)? yes
Load demoDB failed, you can check load.log for more details.
[fhy@RH2288 simpleInstall]$ cat load.log
failed to connect Unknown:5432.
install.sh:行 334: 7349 非法指令 (核心已转储)gsql -d postgres -p $port -f school.sql
failed to connect Unknown:5432.
install.sh:行 334: 7355 非法指令 (核心已转储)gsql -d postgres -p $port -f finance.sql
[fhy@RH2288 simpleInstall]$ /home/fhy/openGauss/bin/gaussdb" -V
> ^C
[fhy@RH2288 simpleInstall]$ "/home/fhy/openGauss/bin/gaussdb" -V
gaussdb (openGauss 6.0.2 build 6285c0ef) compiled at 2025-07-15 16:44:06 commit 0 last mr 8059
非法指令(核心已转储)
应该是 CPU 指令集不支持。于是自动动手下载 openGauss 源码进行编译。
详细的编译方法见官方:https://gitcode.com/opengauss/openGauss-server
以下为 make 方式编译过程:具体环境变量及路径请自行修改。
0.新建 build_env.sh 文件内容如下:
[fhy@RH2288 ~]$ cat /home/fhy/build_env.sh
#!/bin/bash
export CODE_BASE=/home/fhy/openGauss-server
export BINARYLIBS=/home/fhy/binarylibs
export GAUSSHOME=$CODE_BASE/dest
export GCC_PATH=$BINARYLIBS/buildtools/gcc10.3
export CC=$GCC_PATH/gcc/bin/gcc
export CXX=$GCC_PATH/gcc/bin/g++
export PATH=$GCC_PATH/gcc/bin:$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib:$GCC_PATH/mpfr/lib:$GCC_PATH/gmp/lib:$LD_LIBRARY_PATH
# 确认生效
$CC -v
$CXX -v
1.执行 source /home/fhy/build_env.sh
2.开始配置:(可参考官方构建)
# release
./configure --gcc-version=10.3.1 CC=g++ CFLAGS="-O2 -g3 -D__USE_NUMA" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib
# debug
./configure --gcc-version=10.3.1 CC=g++ CFLAGS='-O0 -D__USE_NUMA' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check
3.开始编译
这里有个坑参考官方的编译,中途系统会直接卡死,这里采用限制线程编译。
# 限制线程编译
make -j16
# 安装
make install -j16
编译安装成功后会在 openGauss-server/dest/ 目录生成文件 bin 中为可执行文件。
初始化运行脚本:
[2025-08-28 10:09:49.357][3208][][gs_ctl]: server started (/home/fhy/openGauss-server/data/single_node)
import sql file
Would you like to create a demo database (yes/no)? yes
Load demoDB [school,finance] success.
[complete successfully]: You can start or stop the database server using:
gs_ctl start|stop|restart -D $GAUSSHOME/data/single_node -Z single_node