ClickHouse最版本源码编译
官方指导:
链接: link.
本地环境编译
- 准备clickhouse代码版本:
git clone --recursive https://github.com/ClickHouse/ClickHouse.git
2.搭建ubuntu容器编译环境:
docker pull ubuntu:20.04
3.挂载代码到容器:
docker run -ti -v /home/helios/:/home ubuntu:20.04 /bin/bash
4.配置国内源(注意是版本20.04):
echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse " > /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse " >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse focal" >> /etc/apt/sources.list
5.更新源:
apt-get update
6.安装依赖包:
apt-get install vim
apt-get install git cmake python ninja-build -y
过程中Geographic area: 6 Asia
Time zone: 70 Shanghai
7.按张clang-12:
apt-get install wget sudo
apt install lsb-release wget software-properties-common
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
8.设置clang环境变量:
export CC=clang-12
export CXX=clang++-12:
9.编译源码:
cd /home/ClickHouse
#git checkout v20.3.9.70-lts -f
mkdir build
cd build
cmake ..
ninja
编译过程:
进度有点像bazel
root@acfa7cf72c85:/home/ClickHouse/build# ninja
[0/2] Re-checking globbed directories...
[3507/9556] Generating VCSRevision.h
-- Found Git: /usr/bin/git (found version "2.25.1")
[6356/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kdb5_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=kdb5_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kdb5_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=kdb5_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kdb5_err.et
[6357/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/k5e1_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=k5e1_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/k5e1_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=k5e1_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/k5e1_err.et
[6359/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb524_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=krb524_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb524_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=krb524_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb524_err.et
[6360/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/asn1_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=asn1_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/asn1_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=asn1_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/asn1_err.et
[6361/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb5_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=krb5_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb5_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=krb5_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/krb5_err.et
[6364/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kv5m_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=kv5m_err.h /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kv5m_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=kv5m_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/krb5/error_tables/kv5m_err.et
[6368/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/gssapi/krb5/gssapi_err_krb5.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=gssapi_err_krb5.h /home/ClickHouse/contrib/krb5/src/lib/gssapi/krb5/gssapi_err_krb5.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=gssapi_err_krb5.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/gssapi/krb5/gssapi_err_krb5.et
[6370/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/lib/gssapi/generic/gssapi_err_generic.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=gssapi_err_generic.h /home/ClickHouse/contrib/krb5/src/lib/gssapi/generic/gssapi_err_generic.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=gssapi_err_generic.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/lib/gssapi/generic/gssapi_err_generic.et
[6371/9556] Creating preprocessed file /home/ClickHouse/contrib/krb5/src/util/profile/prof_err.c
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=prof_err.h /home/ClickHouse/contrib/krb5/src/util/profile/prof_err.et
+ /usr/bin/awk -f /home/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=prof_err.c textdomain= localedir= /home/ClickHouse/contrib/krb5/src/util/profile/prof_err.et
[9556/9556] cd /home/ClickHouse/build/programs && /usr/bin/cmake -E create_symlink clickhouse clickhouse-server
编译后的结果:
root@acfa7cf72c85:/home/ClickHouse/build# ll programs/
total 3699136
drwxr-xr-x 17 root root 4096 May 17 11:15 ./
drwxr-xr-x 13 root root 4096 May 17 10:04 ../
drwxr-xr-x 3 root root 28 May 17 09:42 CMakeFiles/
-rw-r--r-- 1 root root 571 May 17 09:42 CTestTestfile.cmake
drwxr-xr-x 4 root root 97 May 17 09:42 bash-completion/
drwxr-xr-x 3 root root 115 May 17 11:08 benchmark/
-rwxr-xr-x 1 root root 1910491432 May 17 11:15 clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-benchmark -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-client -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-compressor -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-copier -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-extract-from-config -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-format -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-git-import -> clickhouse*
-rwxr-xr-x 1 root root 935721632 May 17 11:08 clickhouse-library-bridge*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-local -> clickhouse*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-obfuscator -> clickhouse*
-rwxr-xr-x 1 root root 941675496 May 17 11:08 clickhouse-odbc-bridge*
lrwxrwxrwx 1 root root 10 May 17 11:15 clickhouse-server -> clickhouse*
drwxr-xr-x 3 root root 112 May 17 11:08 client/
-rw-r--r-- 1 root root 5348 May 17 09:42 cmake_install.cmake
drwxr-xr-x 3 root root 116 May 17 11:07 compressor/
drwxr-xr-x 3 root root 112 May 17 11:15 copier/
drwxr-xr-x 3 root root 125 May 17 11:07 extract-from-config/
drwxr-xr-x 3 root root 112 May 17 11:15 format/
drwxr-xr-x 3 root root 116 May 17 11:07 git-import/
drwxr-xr-x 3 root root 113 May 17 11:07 install/
drwxr-xr-x 3 root root 78 May 17 09:42 library-bridge/
drwxr-xr-x 3 root root 111 May 17 11:15 local/
drwxr-xr-x 3 root root 116 May 17 11:07 obfuscator/
drwxr-xr-x 4 root root 91 May 17 09:42 odbc-bridge/
drwxr-xr-x 3 root root 230 May 17 11:15 server/
client和server版本:
root@acfa7cf72c85:/home/ClickHouse/build/programs# ./clickhouse client --version
ClickHouse client version 21.6.1.1.
root@acfa7cf72c85:/home/ClickHouse/build/programs# ./clickhouse server --version
ClickHouse server version 21.6.1.1.
root@acfa7cf72c85:/home/ClickHouse/build/programs#
编译后的代码占磁盘大小
26G ./ClickHouse