openGauss-server

50 阅读3分钟

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

参数说明请见以下表格。

选项缺省值参数说明
-h请勿使用此选项。-帮助菜单。
-mrelease[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…

贡献

欢迎大家来参与贡献。详情请参阅我们的社区贡献

发行说明

请参见发行说明

许可证

MulanPSL-2.0

**

Star

1.4K

**