版本编译

    本章节会介绍openGauss编译需要满足的前提条件,编译的操作步骤等,下图是对编译流程的大致概括,详细内容见下文。

    前提条件

    已在本地安装并配置git和git-lfs。

    操作步骤

    1. 执行如下命令下载代码和开源第三方软件仓库等,其中_[git ssh address]_表示实际代码下载地址,可在openGauss社区获取这些地址。

      版本编译 - 图2 说明:

      • openGauss-server:openGauss的代码仓库。

      • openGauss-third_party:openGauss依赖的开源第三方软件仓库。

      • binarylibs:存放编译构建好的开源第三方软件的文件夹,用户可通过获取。由于开源软件编译构建耗时长,我们特地使用openGauss-third_party编译构建出了一份binarylibs并压缩上传到了网上,用户可以直接下载获取。 下载地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/openGauss-third_party_binarylibs.tar.gz 下载完毕后请解压,重命名文件夹为 binarylibs。

    2. 下载项进度均显示为100%时表示下载成功。

    开源软件编译构建

    开源软件编译构建

    openGauss的编译,需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third_party代码仓中,用户下载完毕之后应用git lfs pull获取代码仓中的大文件,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。

    由于此步骤耗时较长,我们使用openGauss-third_party编译构建出了一份binarylibs,用户可以参考代码下载直接下载获取。

    表 1 openGauss开源三方件编译前置软件要求

    在开始编译第三方库之前,请自行准备好gcc7.3及cmake3.19.2。建议用已发布的编译好的第三方库中gcc,并配置好环境变量。

    在安装完中的软件后,请将python默认版本指向python3.x并执行如下操作:

    1. 执行如下命令进入内核依赖的开源第三方软件目录,进行开源第三方软件的编译和构建,产生相应的二进制程序或库文件。/sda/openGauss-third_party为开源第三方软件下载目录。

      1. [user@linux build]$ sh build_all.sh
    2. 用户执行以上命令之后,可以自动生成数据库编译所需的开源第三方软件,如果想单独的生成某个开源三方软件,可以进入对应的目录,执行build.sh脚本,如:

      1. [user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl
      2. [user@linux openssl]$ sh build.sh

    即可编译生成openssl

    编译构建结果

    执行上述脚本,最终编译构建出的结果会存放在openGauss-third_party目录下的output目录。这些文件会在后面编译openGauss-server时使用到。

    openGauss-server/build.sh是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。

    详细参数选项如下表所示:

    表 2 build.sh参数功能选项介绍。

    功能选项

    缺省值

    参数

    功能

    -h

    不使用此选项

    -

    帮助菜单。

    -m

    release

    [debug | release | memcheck]

    选择编译目标版本。

    -3rd

    ${代码路径}/binarylibs

    [binarylibs path]

    指定binarylibs的路径,需绝对路径。

    -pkg

    不使用此功能

    -

    将代码编译结果压缩封装成安装包。

    -nopt

    不使用此功能

    -

    说明:

    1. -m [debug | release | memcheck] 表示可选择三种目标版本:

      • release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生产环境或性能测试环境。

      • memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。

    2. -3rd [binarylibs path] 为binarylibs的路径。缺省情况下,会认为当前代码文件夹下存在binarylibs。因此如果将binarylibs移动到openGauss-server下,或在openGauss-server下创建了指向binarylibs的软链接,可不指定此选项。但需要注意其容易被git clean等操作删除。

    3. 此脚本每个参数选项都设置了缺省值,且数量并不多,依赖关系简单,因此使用时非常方便。如果用户需求值与缺省值不同,请根据实际情况进行设置。

    软件安装编译即将代码编译生成软件,并将软件安装到机器上。提供一键式编译脚本build.sh进行操作,也可以自己配置环境变量手动操作。两种方式将在本章节的一键式脚本操作步骤、手动编译操作步骤中进行讲解。

    前提条件

    • 已按照的要求准备好相关软硬件,并且已参考代码下载下载了代码。
    • 已完成开源软件编译构建,具体请参见。并将gcc7.3按已发布的编译好的第三方库目录结构放置在output目录中。
    • 了解 build.sh介绍脚本的参数选项和功能。
    • 代码环境干净,没有以前编译生成的文件。具体请参见。
    1. 执行如下命令进入到软件代码编译脚本目录。

      1. [user@linux sda]$ cd /sda/openGauss-server
    2. 执行如下命令,编译安装openGauss。

      1. [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path]

      例如:

      1. sh build.sh # 编译安装release版本的openGauss。需代码目录下有binarylibs或者其软链接,否则将会失败。
      2. sh build.sh -m debug -3rd /sdc/binarylibs # 编译安装debug版本的openGauss
    3. 显示如下内容,表示编译成功。

      • 编译后软件安装路径为:/sda/openGauss-server/dest
      • 编译后的二进制放置路径为:/sda/openGauss-server/dest/bin
      • 编译日志为:make_compile.log

    手动编译

    1. 执行如下命令进入到软件代码目录。

      1. [user@linux sda]$ cd /sda/openGauss-server
    2. 执行脚本获取自己系统的版本

      版本编译 - 图5 说明: - 显示的结果表示openGauss当前支持的操作系统,openGauss支持的操作系统为centos7.6_x86_64、openeuler_aarch64。 - 如果结果显示为 Failed 或者其他版本,表示openGauss不支持当前操作系统。

    3. 配置环境变量,根据自己的代码下载位置补充两处”____“,将获取到的结果替换下面的***

      1. export CODE_BASE=________ # openGauss-server的路径
      2. export BINARYLIBS=________ # binarylibs的路径
      3. export GAUSSHOME=$CODE_BASE/dest/
      4. export GCC_PATH=$BINARYLIBS/buildtools/***/gcc7.3/
      5. export CC=$GCC_PATH/gcc/bin/gcc
      6. export CXX=$GCC_PATH/gcc/bin/g++
      7. 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
      8. export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH
    4. 执行如下命令,编译安装。

      1. [user@linux openGauss-server]$ make -sj
      2. [user@linux openGauss-server]$ make install -sj
    5. 显示如下内容,表示编译安装成功。

      1. openGauss installation complete.
      • 编译后软件安装路径为:$GAUSSHOME
      • 编译后的二进制放置路径为:$GAUSSHOME/bin

    安装包编译即将代码编译生成软件安装包,安装包的编译打包过程也集成在build.sh之中。

    • 已按照搭建编译环境的要求准备好相关软硬件,并且已参考下载了代码。
    • 已完成开源软件编译构建,具体请参见开源软件编译构建
    • 了解 脚本的参数选项和功能。
    • 代码环境干净,没有以前编译生成的文件。具体请参见FAQ

    操作步骤

    1. 执行如下命令进入到代码目录。

      1. [user@linux sda]$ cd /sda/openGauss-server
    2. 执行如下命令编译出openGauss产品安装包。

      1. [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg

      例如:

      1. sh build.sh -pkg # 生成release版本的openGauss安装包。需代码目录下有binarylibs或者其软链接,否则将会失败。
      2. sh build.sh -m debug -3rd /sdc/binarylibs -pkg # 生成debug版本的openGauss安装包

      本操作和软件安装编译相比,同样会经历的一键式编译最终生成软件的过程与将软件封装成安装包的过程。对比 的使用命令可发现,此处仅增加了一个 ‘-pkg’ 功能选项。

      • 生成的安装包会存放在./package目录下。
      • 编译日志为:make_compile.log
      • 安装包打包日志为:./package/make_package.log