源码编译Clickhouse-20.3.17.173-lts 记录
一、步骤概述
准备源码 ,github仓 https://github.com/ClickHouse/ClickHouse ,速度慢的话也可以用国内的镜像代码同步 https://gitee.com/mirrors/clickhouse
准备安装环境 ,按官方建议 https://clickhouse.tech/docs/zh/development/build/ ,环境依赖 gcc9.0+版本,cmake3+版本,ninja构建工具(本文记录使用1.9)。
git 仓同步下来需要提前执行 git submudule命令更新依赖包
二、详细编译步骤
源码准备,将源码从仓库clone 下来,执行
git submodule sync
git submodule update --init --recursive
依赖会同步至ClickHouse\contrib
路径下,具体列表见.gitmodules
文件准备编译环境
升级gcc9 ,首先保证环境里至少有一个gcc版本,通常可以从基础镜像里rpm packge安装gcc 4.x版本,依次编译安装gmp6.x mpfr 3.x mpc1.x ,参考 http://3ms.huawei.com/km/blogs/details/5938131 ,然后编译安装gcc9 ,使用
../configure -with-gmp=/usr/local/GCC/gmp-6.1.0 --with-mpfr=/usr/local/GCC/mpfr-3.1.4 --with-mpc=/usr/local/GCC/mpc-1.0.3
指定刚刚安装好的gmp,mpfr mpc版本,具体包见附件执行 gcc --version
查看版本
安装过程可能出现libstdc++.so.6: version GLIBCXX_3.4.14 not found
问题具体参见 https://blog.csdn.net/xiaolong2w/article/details/23915171
编译安装cmake
cd cmake-3.14.1
./configure make
make install
安装ninja 将ninja包解压,拷贝至/usr/local/bin/ninja 路径即可
执行编译,将更新好的源码上传至服务,进入代码路径
cd Clickhouse
mkdir build
cd build
cmake ..
ninja clickhouse-server clickhouse-client
正常执行完 会生成 server和client的执行文件,可直接运行
执行当中可能遇到的问题,
(1)ninja 构建时出现类似contrib/arrow-cmake/thrift/config.h:1:1: error: expected unqualified-id before ‘.’ token
报错,不要慌,进入对应目录vi查看报错的文件,里面的xx.h可能只是引用…/…/类似的文件,直接删除,新建软链接cd contrib/arrow-cmake/build/cmake
ln -s ../../../thrift/build/cmake/config.h.in config.h.in -f
该问题可能为windows git未生成软连接造成
(2)cmake可能遇到的问题,参见 https://blog.csdn.net/marising/article/details/105846317
三 总结
编译遇到的问题主要是环境问题,需要确认gcc cmake 相关版本,缺啥依赖包安装补上就行。其次是contrib代码包问题,遇到就重新更新,替换对应依赖,ninja遇到没有软链接的进去添加即可。
- 点赞
- 收藏
- 关注作者
评论(0)