openGauss-server中的build.sh是编译过程中的重要脚本工具。该工具集成了软件安装编译和产品安装包编译功能,可快速进行代码编译和打包。。
参数说明请见以下表格。
| 选项 | 缺省值 | 参数 | 说明 | ||
|---|---|---|---|---|---|
| -h | 请勿使用此选项。 | - | 帮助菜单。 | ||
| -m | release | [debug | release | memcheck] | 选择目标版本。 |
| -3rd | ${Code directory}/binarylibs | [binarylibs path] | 指定binarylibs路径。该路径必须是绝对路径。 | ||
| -pkg | 请勿使用此选项。 | - | 将代码编译结果压缩至安装包。 | ||
| -nopt | 请勿使用此选项。 | - | 如果使用此功能,则对鲲鹏平台的相关CPU不进行优化。 |
注意
-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命令删除。
该脚本中的每个选项都有一个默认值。选项数量少,依赖简单。因此,该脚本易于使用。如果实际需要的参数值与默认值不同,请根据实际情况配置。
现在你已经知晓build.sh的用法,只需使用如下命令即可编译openGauss-server。
[user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path]
举例:
[user@linux openGauss-server]$ sh build.sh # 编译安装release版本的openGauss。需代码目录下有binarylibs或者其软链接,否则将会失败。
[user@linux openGauss-server]$ sh build.sh -m debug -3rd /sda/binarylibs # 编译安装debug版本的openGauss
编译后的软件安装路径为: /sda/openGauss-server/dest
编译后的二进制文件路径为: /sda/openGauss-server/dest/bin
编译日志: make_compile.log
使用命令编译代码
1.获取对应的开源三方库二进制文件:
从3.1.0分支和3.0.3 tag开始,对于不同的环境提供不同的开源三方库二进制文件。 目前社区提供Centos_x86_64, openEuler_aarch64, openEuler_x86_64三种平台的三方库二进制。 可以从对应地址下载 下载openGauss
2.配置环境变量
export CODE_BASE=________ # openGauss-server的路径
export BINARYLIBS=________ # binarylibs的路径
export GAUSSHOME=$CODE_BASE/dest/
export GCC_PATH=$BINARYLIBS/buildtools/________ # gcc的版本,根据三方包中对应的gcc版本进行填写即可,一般有gcc7.3或gcc10.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
3.选择一个版本进行配置。
debug版本:
# gcc7.3.0版本
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib
# gcc10.3.1版本(一般用于openEuler + ARM架构)
./configure --gcc-version=10.3.1 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib
# gcc10.3.0版本
./configure --gcc-version=10.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib
release版本:
# gcc7.3.0版本
./configure --gcc-version=7.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib
# gcc10.3.1版本(一般用于openEuler + ARM架构)
./configure --gcc-version=10.3.1 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib
# gcc10.3.0版本
./configure --gcc-version=10.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib
memcheck版本:
# gcc7.3.0版本
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check
# gcc10.3.1版本(一般用于openEuler + ARM架构)
./configure --gcc-version=10.3.1 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check
# gcc10.3.0版本
./configure --gcc-version=10.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib --enable-memory-check
注意
- [debug | release | memcheck] 表示有三个目标版本可用。
- 在ARM平台上,需要把 -D__USE_NUMA 添加至 CFLAGS 中。
- 在ARMv8.1及以上平台(如鲲鹏920),需要把 -D__ARM_LSE 添加至CFLAGS中。
- 如果binarylibs被移至openGauss-server中,或者在openGauss-server中创建了到binarylibs的软链接,则不需要指定 --3rd 参数。但请注意,这样做的话,该文件很容易被
git clean命令删除。
4.执行以下命令编译openGauss:
[user@linux openGauss-server]$ make -sj
[user@linux openGauss-server]$ make install -sj
5.显示如下信息,表示编译和安装成功。
openGauss installation complete.
- 编译后的软件安装路径为: $GAUSSHOME。
- 编译后的二进制文件存放路径为: $GAUSSHOME/bin。
编译安装包
请先阅读使用build.sh编译章节,了解build.sh的用法,以及如何使用该脚本编译openGauss。
现在,只需添加一个-pkg选项,就可以编译安装包。
[user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg
举例:
sh build.sh -pkg # 生成release版本的openGauss安装包。需代码目录下有binarylibs或者其软链接,否则将会失败。
sh build.sh -m debug -3rd /sdc/binarylibs -pkg # 生成debug版本的openGauss安装包
- 生成的安装包存放目录: ./package。
- 编译日志: make_compile.log
- 安装包打包日志: ./package/make_package.log
快速入门
参考快速入门。
文档
更多安装指南、教程和API请参考用户文档。
社区
治理
查看openGauss是如何实现开放治理。
交流
- WeLink:开发者的交流平台。
- IRC频道:
#opengauss-meeting(仅用于会议纪要)。 - 邮件列表:opengauss.org/zh/communit…
贡献
欢迎大家来参与贡献。详情请参阅我们的社区贡献。
发行说明
请参见发行说明。