圈子推荐
查看所有吧>>
活跃用户
    (vastbase G100/opengauss)数据库的编译指导

    1.编译三方库

    社区针对 centos_7.6_x86_64、openEuler20.03 LTS_arm、openEuler20.03 LTS_ x86_64 三种架构及操作系统已经提供了编译好的二进制,对于这三种系统架构,可以直接使用社区提供的编译好的文件openGauss-third_party_binarylibs.tar.gz,对于其他系统,需要用户自己编译。

    针对其他系统编译三方库步骤

    1.1.编译步骤概述

    (1) 需要自行编译好 gcc 和 cmake,gcc推荐使用 7.3.0 版本,cmake推荐 >=3.16(如果系统中的cmake版本>=3.16则直接使用系统自带cmake即可)。 (2) 下载三方库源码,修改脚本增加新的平台信息。 (3) 进入到 openGauss-third_party/build 下,运行 sh build_all.sh ,即可进行全量三方库的编译。    在此编译过程中,首先编译了 openssl ,然后按照顺序编译构建工具 buildtools 、平台软件 platform 、三方依赖 dependency。 (4) 编译完成后,编译结果在 openGauss-third_party/output 目录下。

    1.2.编译gcc和cmake

    gcc和cmake编译请参照:gcc编译指导

    编译完成后,将gcc和cmake导入到环境变量中,然后便可进行三方库编译:

    export CMAKEROOT=$cmake_prefix     ##编译cmake指定的--prefix export GCC_PATH=$gcc_prefix        ##编译gcc指定的--prefix export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ export LD_LIBRARY_PATH=$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$CMAKEROOT/lib:$LD_LIBRARY_PATH export PATH=$GCC_PATH/gcc/bin:$CMAKEROOT/bin:$PATH1.3.脚本增加平台信息

    修改 openGauss-third_party/build/get_PlatForm_str.sh 增加新的平台,如下图

    $kernel信息可以通过命令获取:

    l***_release -d | awk -F ' ' '{print $2}'| tr A-Z a-z

    在以下python的三方依赖中,增加平台信息。

    openGauss-third_party/dependency/fio/build.py openGauss-third_party/dependency/iperf /build.py openGauss-third_party/dependency/jemalloc/build.py openGauss-third_party/dependency/kerberos/build.py openGauss-third_party/dependency/libcgroup/build.py openGauss-third_party/dependency/libedit/build.py openGauss-third_party/dependency/nanomsg /build.py openGauss-third_party/dependency/numactl/build.py openGauss-third_party/dependency/openssl/build.py openGauss-third_party/dependency/protobuf/build.py

    binary_parse 函数中,增加新的平台相关信息配置。这几个文件改动相同

    以下错误信息均是由于未增加平台信息引起:

    Failed [Error] the plat form is not supported! [ERROR] Not supported platform type1.4.编译三方库

    进入到openGauss-third_party/build目录,运行 sh build_all.sh,全量编译三方库 如果在编译过程中,某一步有错误,解决错误后,可以注释掉已经编译好的三方库,只编译还未编译成功的库,分组单独进行编译。

    编译buildtools

    cd openGauss-third_party/build_tools sh build_tools.sh

    编译platform

    cd openGauss-third_party/platform/build/ sh build_platform.sh

    编译dependency

    cd openGauss-third_party/dependency/build/ sh build_dependency.sh1.5.编译完成

    编译结果在 openGauss-third_party/output 之中,目录层级结构如下(${platform} 即为当前平台信息):

    openGauss-third_party - output - buildtools - license_control - server_key - ${platform} - gcc7.3 - common - commons-codec - fastjson …… - dependency - ${platform} - boost - cjson …… - install_tools_${platform} - asnlcrypto …… - platform - ${platform} - openjdk ……

    将编译好的 gmp mpfr mpc isl gcc 目录拷贝到openGauss-third_party/output/buildtools/${platform}/gcc7.3下,output目录即为完整的三方库二级制。将output目录拷贝出去,重命名为binarylibs,便可以使用它进行数据库编译。

    2.编译数据库

    以上完成三方库编译后,就可以开始数据库的编译了。以下介绍如何进行编译,以及修改代码适配不同的gcc版本、不同的操作系统。

    2.1.编译数据库

    下载openGauss-server代码,进入到源码目录下。

    一键编译

    编译命令:

    sh build.sh -m release -3rd /usr2/compile/binarylibs

    -3rd 为第一步编译好的三方库二进制目录 -m 参数可选择 debug|release|memcheck编译完成后,目标文件在./mppdb_tmp_install下面。

    手动编译

    导入环境变量:

    export CODE_BASE=/usr2/compile/openGauss-server export BINARYLIBS=/usr2/compile/binarylibs export GAUSSHOME=$CODE_BASE/dest/ export GCC_PATH=$BINARYLIBS/buildtools/openeuler_aarch64/gcc7.3/ export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ 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 export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH

    参数说明: CODE_BASE 为openGauss-server源码目录; BINARYLIBS 为第一步编译好的三方库二进制目录; GAUSSHOME 为编译完成的目标文件路径; GCC_PATH 二进制中,GCC编译结果存放的路径,需要修改里面的openeuler_aarch64为实际的平台信息。

    编译命令如下:

    ./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib make –sj make install –sj2.2.编译适配其他系统

    对于 centos_7.6 以及 openEuler20.03 LTS 操作系统,可以直接编译。其他系统需要修改代码适配。

    修改脚本新增平台:

    打开 openGauss-server/src/get_PlatForm_str.sh,在里面(134行)增加新的平台信息,例如:

    在 openGauss-server/build/script/mpp_package.sh:46 行 和 openGauss-server/build/script/package_opengauss.sh:55 行 增加平台的信息。

    修改Makefile文件打开openGauss-server/src/gausskernel/Makefile文件,在702行,复制一份其他系统的并更改为当前平台。

    一键编译

    sh build.sh -m release -3rd /usr2/compile/binarylibs

    手动编译

    参照2.1编译数据库的手动编译命令,只需要修改 GCC_PATH 中平台参数,其他操作保持一致。

    export GCC_PATH=$BINARYLIBS/buildtools/ubuntu_x86_64/gcc7.3/

    2.3.编译适配其他版本gcc

    当前openGauss固定编译使用的gcc版本为 gcc7.3,如果使用其他gcc版本,例如 gcc8.2(支持c11标准),也可以进行编译。需要修改代码适配。

    修改配置中的gcc版本为指定版本

    openGauss-server/configure:936行,gcc_version改为指定版本。 openGauss-server/build/script/mpp_package.sh 62行和311行(关键字gcc_version),7.3.0改为指定版本。

    configure文件:mpp_package文件:

    一键编译

    sh build.sh -m release -3rd /usr2/compile/binarylibs

    手动编译参照2.1手动编译命令,修改环境变量的gcc版本为指定版本:

    export GCC_PATH=$BINARYLIBS/buildtools/openeuler_aarch64/gcc8.2/

    修改configure版本为指定版本:

    ./configure --gcc-version=8.2.0 ........


    • 分享到:
    排序方式:回复时间 共有0条评论