1) 代码下载
本文以CentOS 7.6环境为例进行介绍。代码下载需要在本地安装并配置git。
(1) 执行如下命令下载代码和开源第三方软件仓库等。
[user@linux sda]$ git clone [git ssh address] openGauss-server
[user@linux sda]$ git clone [git ssh address] openGauss-third_party
[user@linux sda]$ # mkdir binarylibs
上述命令中:
[git ssh address]表示实际代码下载地址,可在openGauss社区获取这些地址。
openGauss-server:openGauss的代码仓库。
openGauss-third_party:openGauss依赖的开源第三方软件仓库。
binarylibs:存放编译构建好的开源第三方软件的文件夹,用户可通过开源软件编译构建获取。开源软件编译构建耗时长,建议使用已完成编译构建、可直接下载的binarylibs(二进制库)。下载地址是“https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/openGauss-third_party_binarylibs.tar.gz”,下载完毕后请解压,重命名文件夹为“binarylibs”。
(2) 下载项进度均显示为100%时表示下载成功。
2) (可选)开源软件编译构建
openGauss的编译需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third_party代码仓中,用户下载完毕之后应使用git lfs pull命令获取代码仓中的大文件,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。
由于此步骤耗时较长,使用openGauss-third_party编译构建出了一份binarylibs,用户可以直接下载获取。
开源三方件编译前置软件要求如表2-9所示。
表2-9 openGauss开源三方件编译前置软件要求
在开始编译第三方库之前,请自行准备好gcc7.3。建议用已发布的编译好的第三方库中GCC(GNU compiler collection,GNU编译器集),并配置好环境变量。
在安装完表2-9开源软件编译前置要求中的软件后,请将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脚本,如下所示即可编译生成openssl。
[user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl
[user@linux openssl]$ sh build.sh
(3) 执行上述脚本,最终编译构建出的结果会存放在openGauss-third_party同级的binarylibs目录。这些文件会在后面编译openGauss-server时使用到。
3) 编译脚本build.sh介绍
“openGauss-server/build.sh”是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。
详细参数选项如表2-10所示。
表2-10 build.sh功能选项介绍
该脚本中的每个选项都有一个默认值。选项数量少,依赖简单。因此,该脚本易于使用。如果实际需要的参数值与默认值不同,请根据实际情况配置。
本文以CentOS 7.6环境为例进行介绍。代码下载需要在本地安装并配置git。
(1) 执行如下命令下载代码和开源第三方软件仓库等。
[user@linux sda]$ git clone [git ssh address] openGauss-server
[user@linux sda]$ git clone [git ssh address] openGauss-third_party
[user@linux sda]$ # mkdir binarylibs
上述命令中:
[git ssh address]表示实际代码下载地址,可在openGauss社区获取这些地址。
openGauss-server:openGauss的代码仓库。
openGauss-third_party:openGauss依赖的开源第三方软件仓库。
binarylibs:存放编译构建好的开源第三方软件的文件夹,用户可通过开源软件编译构建获取。开源软件编译构建耗时长,建议使用已完成编译构建、可直接下载的binarylibs(二进制库)。下载地址是“https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/openGauss-third_party_binarylibs.tar.gz”,下载完毕后请解压,重命名文件夹为“binarylibs”。
(2) 下载项进度均显示为100%时表示下载成功。
2) (可选)开源软件编译构建
openGauss的编译需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third_party代码仓中,用户下载完毕之后应使用git lfs pull命令获取代码仓中的大文件,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。
由于此步骤耗时较长,使用openGauss-third_party编译构建出了一份binarylibs,用户可以直接下载获取。
开源三方件编译前置软件要求如表2-9所示。
表2-9 openGauss开源三方件编译前置软件要求
| 所需软件 | 建议版本 |
| python3 | 建议版本:3.6 |
| python3-dev | 建议版本: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-devl | 建议版本:1.1.8-1.3.1 |
| ncurses-devel | 建议版本:5.9-13.20130511 |
| libffi-dev | 建议版本:3.1 |
| patch | 建议版本:2.7.1-10 |
| golang | 建议版本:1.13.3及以上 |
| autoconf | 建议版本:2.69 |
| automake | 建议版本:1.13.4 |
| byacc | 建议版本:1.9 |
| cmake | 建议版本:3.19.2 |
| diffutils | 建议版本:3.7 |
| openssl-devel | 建议版本:1.1.1 |
| libtool | 建议版本:2.4.2及以上 |
| libtool-devel | 建议版本:2.4.2及以上 |
在开始编译第三方库之前,请自行准备好gcc7.3。建议用已发布的编译好的第三方库中GCC(GNU compiler collection,GNU编译器集),并配置好环境变量。
在安装完表2-9开源软件编译前置要求中的软件后,请将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脚本,如下所示即可编译生成openssl。
[user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl
[user@linux openssl]$ sh build.sh
(3) 执行上述脚本,最终编译构建出的结果会存放在openGauss-third_party同级的binarylibs目录。这些文件会在后面编译openGauss-server时使用到。
3) 编译脚本build.sh介绍
“openGauss-server/build.sh”是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。
详细参数选项如表2-10所示。
表2-10 build.sh功能选项介绍
| 功能选项 | 缺省值 | 参数 | 说明 |
| -h | 不使用此选项 | - | 帮助菜单 |
| -m | release | [debug | release | memcheck] | 选择编译目标版本。有三个目标版本可以选择: release:生成release版本的二进制程序。此版本编译时,通过配置GCC(GNU compiler collection,GNU编译器集)高级优化选项,去除内核调试代码。此选项通常在生产环境或性能测试环境中使用 debug:表示生成debug版本的二进制程序。此版本编译时,增加了内核代码调试功能,一般用于开发自测环境 memcheck:表示生成memcheck版本的二进制程序。此版本编译时,在debug版本的基础上增加了ASAN功能,用于定位内存问题 |
| -3rd | ${代码路径}/binarylibs | [binarylibs path] | 指定binarylibs的路径,需绝对路径 |
| -pkg | 不使用此功能 | - | 将代码编译结果压缩封装成安装包 |
| -nopt | 不使用此功能 | - | 如果使用此功能,则对鲲鹏平台的相关CPU不进行优化 |
该脚本中的每个选项都有一个默认值。选项数量少,依赖简单。因此,该脚本易于使用。如果实际需要的参数值与默认值不同,请根据实际情况配置。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




