概述
本文档介绍再编译openGauss-third_party三方库时候,boost编译失败解决方法。 目前在 1.1.0 2.0.0 版本都适用。
错误分析和处理
在编译openGauss-third_party三方库时候,我们首先在build目录下执行sh build.sh,三方库自行编译。 但是经常遇到在编译到boost的时候,脚本终止掉了。很明显,这里面编译出错了。

dependency依赖的编译日志在 dependency/build 目录下demo.log,这里面可以很明显的看到错误信息。
也可以进入到dependency/boost目录下,单独编译,看看报错。
sh build.sh -m all
可以看到缺少了 pyconfig.h 头文件。
使用 yum provides */pyconfig.h 查找下,发现在python-devel包里面,需要安装下python2-devel包。

yum install python2-devel
yum install python3-devel其实我们在编译前,已经安装过这两个依赖。但是还是出现了这个问题。。。。
我们在开始编译的时候,做了这个操作,将python链接到python3: ln -s /usr/bin/python3 /usr/bin/python
安装依赖
使用下面的步骤来构建开源软件的二进制目录,用来编译openGauss数据库。
请确保在构建前,服务器已经安装了 gcc gcc-c++
开始编译二进制前,还需要下面这些依赖,可以通过yum install进行安装。
编译三方库中python相关组件依赖python3,请将/usr/bin/python链接到python3。
这里是因为,三方库里面有很多需要使用python3编译的三方库,但是脚本中写的/usr/bin/python的执行环境,所以需要做这个链接操作,将python指向python3。
但是boost编译,依赖的头文件是python2-devel的,这里需要将python链接到python2上。如下:
unlink /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python再次编译 sh build.sh -m all,编译成功。

在 dependency/build/build_dependency.sh 里面,注释掉已经编译好的脚本片段,执行 sh build_dependency.sh
继续编译未完成的三方库。
注意:在编译完boost后,还需要将python再链接到python3,以完成后面三方库的编译工作。
unlink /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python



