openGauss 编译指南:版本编译(1)

版本编译

openGauss的编译过程和生成安装包的过程已经写成了一个一键式的脚本build.sh,可以方便的通过脚本进行编译操作。也可以自己配置环境变量,通过命令进行编译。

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

编译前准备

代码下载

前提条件

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

操作步骤

  1. 执行如下命令下载代码和开源第三方软件仓库:

    [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server -b branchname #openGauss的代码仓库
    [user@linux sda]$ git clone https://gitee.com/opengauss/openGauss-third_party.git openGauss-third_party #openGauss依赖的开源第三方软件仓库
    [user@linux sda]$ # mkdir binarylibs        关于此注释步骤,请阅读说明
    

     说明:

    下载完毕后执行解压并重命名 mv openGauss-third_party_binarylibs binarylibs。

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

开源软件编译构建

开源软件编译构建

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

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

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

所需软件

建议版本

python3

建议版本:3.6

python3-devel

建议版本:3

setuptools

建议版本:36.6.1

libaio-devel

建议版本:0.3.109-13

flex

要求版本:2.5.31 以上

ncurses-devel

建议版本:5.9-13.20130511

lsb_release

建议版本:4.1

pam-devel

建议版本:1.1.8-1.3.1

libffi-devel

建议版本:3.1

patch

建议版本:2.7.1-10

golang

建议版本:1.13.3及以上

autoconf

建议版本:2.69

automake

建议版本:1.13.4

cmake

建议版本:3.18

diffutils

建议版本:3.7

openssl-devel

建议版本:1.1.1

libtool

建议版本:2.4.2及以上

libtool-devel

建议版本:2.4.2及以上

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

在安装完表1 openGauss开源三方件编译前置软件要求中的软件后,请将python默认版本指向python3.x并执行如下操作:

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

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

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

    即可编译生成openssl

     说明:

    相关的报错日志可以查看对应的build目录下对应名字的log以及对应模块下的log,如dependency模块下的openssl的相关编译安装日志可以查看:

    • /sda/openGauss-third_party/build/dependency_build.log
    • /sda/openGauss-third_party/dependency/build/openssl_build.log
    • /sda/openGauss-third_party/dependency/openssl/build_openssl.log

编译构建结果

执行上述脚本,最终编译构建出的结果会存放在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

不使用此功能

-

如果使用此功能,则对鲲鹏平台的相关CPU不进行优化。

-nls

不使用此功能

-

启用日志翻译

 说明:

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

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

    • debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值