精华 clickhouse 在centos7.4 编译
发布于 14 天前 作者 super_sponge 144 次浏览 来自 实战经验

一、准备工作 (华为云主机双cpu双核心,4G内存,centos7.4)

  1. 是否支持SSE4.2

    grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported”

  2. 安装依赖项

    yum install -y git clang yum install -y libicu-devel yum install -y readline-devel yum install -y mysql-devel yum install -y openssl-devel yum install -y unixODBC_devel yum install -y bzip2 gcc gcc-c++ make

  3. 编译安装gcc6 (因为clickhouse使用了c++11相关特性,所以需要安装高版本gcc,默认yum源的gcc版本太低)
    tar -zxf gcc-8.2.0.tar.gz cd gcc-8.2.0 ./contrib/download_prerequisites mkdir build cd build …/configure --enable-threads=posix --disable-checking --disable-multilib #disable-multilib表示编译64位 export THREADS=$(grep -c ^processor /proc/cpuinfo) #获取cpu核心数 make -j $THREADS #漫长的等待 make install hash gcc g++ #这一步改变版本,这样就能使用刚刚安装的gcc6了
    gcc --version #即可看到最新版本

  4. 修改动态链接库

    虽然安装了新版gcc,但是某些程序编译时会报以下错误:

    libstdc++.so.6: version `GLIBCXX_3.4.21’ not found error (这是在编译安装cmake3时出现,可能也是文章中遇到的其中一个编译问题的原因)

    这是因为虽然安装了最新版本gcc,但是链接库还是旧的,解决办法是删除原有链接库,并创建软连接到新版gcc对应的链接库

    rm -f /usr/lib64/libstdc++.so.6 ln -s /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6

  5. 编译安装cmake3

    cmake官网下载cmake3.9 ,按官方文档说明编译(./bootstrap ; gmake ; make install)

二、 开始正式编译

  1. 获取源码 (本文使用的是主干版本)
    git clone git@github.com:yandex/ClickHouse.git
    也可以使用稳定版本编译 git clone --recursive --branch stable https://github.com/yandex/ClickHouse.git

  2. 开始编译
    export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g++ cd ClickHouse mkdir build cd build cmake … #这一步出现错误,问题请看文章中,三、遇到的问题 cmake问题 make -j $THREADS #这一步出现的错误,请看 三、遇到的问题 make问题 make install

3 回复

Centos7中,我是使用 Altinity的rpm打包脚本编译的,帮你自动安装了依赖包、gcc7,cmake3、配置环境变量,脚本位于:https://github.com/Altinity/clickhouse-rpm

谢谢,超级赞。

回到顶部