ClickHouse系列教程: ClickHouse系列教程
参考上一篇博客: ClickHouse系列教程六:源码分析之Debug编译运行
先安装 gcc 8, g++ 8, cmake 3, ninja ,参考这篇博客:在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja
然后安装最新的glibc,参考这篇博客:在centos上安装最新的glibc
然后clone,编译,安装:
git clone --recursive --branch stable /yandex/ClickHouse.gitcd ClickHousemkdir build && cd build cmake .. -DCMAKE_CXX_COMPILER=`which g++` -DCMAKE_C_COMPILER=`which gcc` ninja -j1
如果在编译的时候报错:
FAILED: libs/libglibc-compatibility/CMakeFiles/glibc-compatibility.dir/musl/getentropy.c.o /usr/local/bin/gcc -I../libs/libglibc-compatibility/libcxxabi -fdiagnostics-color=always -pipe -msse4.1 -msse4.2 -mpopcnt -fno-omit-frame-pointer -Wall -no-pie -Werror -O2 -g -DNDEBUG -O3 -MD -MT libs/libglibc-compatibility/CMakeFiles/glibc-compatibility.dir/musl/getentropy.c.o -MF libs/libglibc-compatibility/CMakeFiles/glibc-compatibility.dir/musl/getentropy.c.o.d -o libs/libglibc-compatibility/CMakeFiles/glibc-compatibility.dir/musl/getentropy.c.o -c ../libs/libglibc-compatibility/musl/getentropy.c../libs/libglibc-compatibility/musl/getentropy.c:3:10: fatal error: sys/random.h: No such file or directory#include <sys/random.h>^~~~~~~~~~~~~~compilation terminated.[2498/4024] Building CXX object libs/libcommon/src/tests/CMakeFiles/unit_tests_libcommon.dir/gtest_json_test.cpp.oninja: build stopped: subcommand failed.
这个错误是因为libc的版本太古老了,解决方法是升级glibc的版本:linux - getrandom syscall in C not found - Stack Overflow
在的glibc 2.25版本中增加了<sys/random.h>头文件,详情:Siddhesh Poyarekar - The GNU C Library version 2.25 is now available
在centos上安装最新的glibc的教程参考文章:在centos上安装最新的glibc