【我和 openGauss 的故事】openEuler20.03 上编译安装 opengauss-5.0.0
【我和 openGauss 的故事】openEuler20.03 上编译安装 opengauss-5.0.0
ziyoo0830 [openGauss](javascript:void(0);) 2023-08-03 16:49 发表于四川
为了更好地学习 openGauss 数据库知识,有时候需要去调试源代码来深入了解一些东西。以下记录了在 openEuler20.03 上编译最新的 openGauss-server 源代码的过程,记录了手工编译过程遇到的一些问题,同时尝试使用 vscode 去调试了下源代码,文中也提供了几个 vscode 的调试样例。
vscode 调试参考:https://www.modb.pro/db/1683159982970331136,https://www.modb.pro/db/658344。
以下采用的是手工编译的方法来安装。
下载第三方libs
下载opengauss-server
代码
下载5.0.0
的源代码
configure
make
make install
配置环境变量
初始化数据库
启动数据库
登录数据库
问题记录
expected primary-expression
…/…/…/src/include/storage/cfs/cfs_converter.h:15:55: error: expected primary-expression before ‘/’ tokenconstexpr int CFS_EXTENT_COUNT_PER_FILE = RELSEG_SIZE / CFS_EXTENT_SIZE;^In file included from cfs_tools.cpp:9:0:…/…/…/src/include/storage/cfs/cfs_converter.h:15:55: error: expected primary-expression before ‘/’ tokenconstexpr int CFS_EXTENT_COUNT_PER_FILE = RELSEG_SIZE / CFS_EXTENT_SIZE;^make[3]: *** [Makefile:49: libpagecompression.so] Error 1make[3]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src/lib/page_compression’make[2]: *** [Makefile:31: all-page_compression-recurse] Error 2make[2]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src/lib’make[1]: *** [Makefile:68: all-lib-recurse] Error 2make[1]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src’make: *** [GNUmakefile:12: all-src-recurse] Error 2
# configure 脚本中该值无法计算 ,可以直接写按默认值计算出的值。 # RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024` # RELSEG_SIZE=`expr '(' 1024 / 8 ')' '*' 1 '*' 1024` RELSEG_SIZE=131072
vscode
调试代码
gaussdb
的服务进程入口为src/gausskernel/process/main/main.cpp
下的 main 函数,在此函数的第一行代码打上断点。
详细配置调试方法可参考网上方法。
总结
从以上编译过程可以看到,openGauss 的编译还是比较简单的。也可以编译出 tar 包,部署到线上测试环境,使用 gdb 工具进行调试。
评论