ClickHouse:在 CentOS7.4 中编译 ClickHouse

目录

一、环境准备

二、创建编译使用的脚本

三、编译 ClickHouse


一、环境准备

1.1、CentOS 版本为 7.4.1708

1.2、从 github clone ClickHouse 源码,checkout 到 tag v21.2.6.1-stable。clone ClickHOuse 代码的时候需要把依赖的子项目也都 clone 下来,命令如下:

git clone --recursive https://github.com/ClickHouse/ClickHouse.git

1.3、从 LLVM官网 下载最新版的 llvm、clang、compiler-rt 三个源码文件

1.4、创建脚本文件 centos7_build_clickhouse.sh 用来执行编译操作

把这几个文件(目录)放在同一个目录下,目录结构如下:

tree -L 1
.
|-- ClickHouse # 从 GitHub clone 下载的 ClickHouse 源码,并手动 checkout 到最新的稳定版
|-- centos7-build-clickhouse.sh # 执行编译操作的脚本文件
|-- clang-11.0.0.src.tar.xz # clang 的源码文件
|-- compiler-rt-11.0.0.src.tar.xz # 编译器源码
`-- llvm-11.0.0.src.tar.xz # llvm 源码

二、创建编译使用的脚本

centos7_build_clickhouse.sh 内容如下(脚本来源 https://gist.github.com/filimonov/0aa441717d0faf9b77d7099bc61a1e9e,略有修改):

basedir=$(cd $(dirname ${0}) ; pwd)

CODE_DIR="${basedir}/ClickHouse"
if [ -n "${1}" ] ; then
    CODE_DIR="$(cd ${1} ; pwd)"
fi

function check_error()
{
    if [ $? -ne 0 ] ; then
        echo -e "\033[0;33m error happend [${@}] \033[0;m"
        exit $?
    fi
}

THREADS=$(grep -c ^processor /proc/cpuinfo) # should not use all cpus
export THREADS=$[ ${THREADS} / 2 + 1 ]

# Determine RHEL major version
RHEL_VERSION=`rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux|goslinux)-release(|-server|-workstation|-client|-computenode)'`

function install_deps()
{
    # add extra repos
    yum -y install epel-release centos-release-scl centos-release-scl-rh
    
    # installing needed libs
    yum -y install readline-devel unixODBC-devel openssl-devel libicu-devel libtool-ltdl-devel openssl-devel scl-utils
    
    yum -y install http://dev.mysql.com/get/mysql57-community-release-el$RHEL_VERSION-11.noarch.rpm
    yum -y install mysql-community-devel
    
    # installing build tools
    yum -y install git cmake3 devtoolset-9 tar wget

    yum -y install http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm
    yum -y install ninja-build
}

function install_clang()
{
    hash clang
    if [ $? -eq 0 ] ; then
        echo -e "\033[0;33mclang has been installd, if you insist to install clang again, please remove this check\033[0m"
        return 0
    fi
    #
    ##### CLANG  #####
    yum -y install python27 xz 
    
    mkdir -p ${basedir}/llvm
    mkdir -p ${basedir}/llvm/llvm/tools/clang
    mkdir -p ${basedir}/llvm/llvm/projects/compiler-rt
    mkdir -p ${basedir}/llvm/build

    cd ${basedir}/llvm
    tar xf ${basedir}/llvm-11.0.0.src.tar.xz        -J --strip-components=1 -Cllvm
    tar xf ${basedir}/clang-11.0.0.src.tar.xz       -J --strip-components=1 -Cllvm/tools/clang
    tar xf ${basedir}/compiler-rt-11.0.0.src.tar.xz -J --strip-components=1 -Cllvm/projects/compiler-rt

    # scl enable - set the ENV for the passed command to use software from the collection(s)
    cd ${basedir}/llvm/build
    scl enable devtoolset-9 python27 'cmake3 -D CMAKE_BUILD_TYPE:STRING=Release ../llvm'
    check_error 'cmake3 -D CMAKE_BUILD_TYPE:STRING=Release ../llvm'
    
    scl enable devtoolset-9 python27 'make  -j $THREADS && make install'
    check_error 'make && make install'
    
    hash clang
    check_error 'hash clang'
    
    #### CLANG END  #####
}

function compile_clickhouse()
{
    mkdir -p ${CODE_DIR}/build
    cd ${CODE_DIR}/build
    scl enable devtoolset-9 'CC=clang CXX=clang++ cmake3 -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/ninja ..'
    scl enable devtoolset-9 'ninja -j $THREADS clickhouse'
}

install_deps
install_clang
compile_clickhouse

#clickhouse-server --config=/usr/local/etc/clickhouse-server/config.xml

三、编译 ClickHouse

运行脚本文件 centos7_build_clickhouse.sh ,开始编译:

sh centos7-build-clickhouse.sh ClickHouse # ClickHouse 是 git clone 下来的目录

编译完成后,在目录 ClickHouse/build/programs/ 中会出现编译完成的 clickhouse 二进制文件

$ ls -l ClickHouse/build/programs/

-rwxr-xr-x  1 365376600 Mar 22 04:49 clickhouse
lrwxrwxrwx  1        10 Mar 19 10:08 clickhouse-benchmark -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-client -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-compressor -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:08 clickhouse-copier -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-extract-from-config -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-format -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-git-import -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-local -> clickhouse
lrwxrwxrwx  1        10 Mar 19 10:06 clickhouse-obfuscator -> clickhouse
-rwxr-xr-x  1 894804664 Mar 19 10:11 clickhouse-odbc-bridge
lrwxrwxrwx  1        10 Mar 19 10:03 clickhouse-server -> clickhouse

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值