当前位置: 首页 > news >正文

CentOS 7 编译ClickHouse 24.8完整指南

前言

在CentOS 7上编译ClickHouse 24.8可能会遇到一些挑战,主要是因为CentOS 7的默认软件版本较旧。本文将详细介绍从零开始构建ClickHouse 24.8的完整过程,包括依赖安装和环境配置。

准备工作

首先确保系统已更新到最新版本:

yum update -y

1. 安装CMake

ClickHouse需要CMake 3.1.7以上版本,我们安装3.25.3:

wget --no-check-certificate https://cmake.org/files/v3.25/cmake-3.25.3-linux-x86_64.sh
mkdir /usr/local/cmake && ./cmake-3.25.3-linux-x86_64.sh --prefix=/usr/local/cmake --skip-license
ln -s /usr/local/cmake/bin/cmake /usr/local/bin/cmake
ln -s /usr/local/cmake/bin/cpack /usr/local/bin/cpack
ln -s /usr/local/cmake/bin/ctest /usr/local/bin/ctest

2. 安装GCC 10

CentOS 7默认GCC 4.8太旧,需要升级到GCC 10:

# 配置阿里云镜像源
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 配置SCL源
yum install -y centos-release-scl
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl.repo
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
sed -i 's|baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.aliyun.com/centos|g' /etc/yum.repos.d/CentOS-SCLo-scl*.repoyum clean all && yum makecache
yum install -y centos-release-scl
yum install -y devtoolset-10-gcc*# 启用GCC 10
scl --list
scl enable devtoolset-10 bashecho "source /opt/rh/devtoolset-10/enable" >> ~/.bashrc
source ~/.bashrc
gcc --version

3. 安装Python 3

wget --no-check-certificate https://www.python.org/ftp/python/3.8.19/Python-3.8.19.tgz
tar xvf Python-3.8.19.tgz
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-develcd Python-3.8.19
./configure --enable-optimizations --prefix=/usr/local/python3
make -j$(nproc)
make installln -s /usr/local/python3/bin/python3.8 /usr/bin/python3

4. 安装LLVM

使用LLVM来编译ClickHouse,安装18.1.8版本:

git clone --depth=1 --branch=llvmorg-18.1.8 https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd buildcmake -G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
-DLLVM_TARGETS_TO_BUILD='X86' \
-DCMAKE_INSTALL_PREFIX=/usr/local/llvm-18.1.8 \
../llvm-project/llvmmake -j$(nproc)
make installecho 'export PATH=/usr/local/llvm-18.1.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/llvm-18.1.8/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrcln -s /usr/local/llvm-18.1.8/bin/clang /usr/local/bin/clang
ln -s /usr/local/llvm-18.1.8/bin/clang++ /usr/local/bin/clang++

5. 安装NASM和YASM

# 安装NASM
wget --no-check-certificate http://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.gz
tar zxvf nasm-2.16.03.tar.gz && cd nasm-2.16.03
./configure --prefix=/usr/local/nasm
make && make install
ln -s /usr/local/nasm/bin/nasm /usr/local/bin/nasm# 安装YASM
wget --no-check-certificate http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz && cd yasm-1.3.0
./configure --prefix=/usr/local/yasm
make && make install
ln -s /usr/local/yasm/bin/yasm /usr/local/bin/yasm

6. 编译ClickHouse

git clone --branch=v24.8.14.39-lts --recurse-submodules https://github.com/ClickHouse/ClickHouse
cd ClickHouse
git checkout -b v24.8.14.39-lts origin/v24.8.14.39-lts
git submodule update --init --recursive# 解决可能出现的mariadb-connector-c问题
rm -rf contrib/mariadb-connector-c
git submodule update --init --force contrib/mariadb-connector-c# 设置编译环境
export CC=/usr/local/bin/clang
export CXX=/usr/local/bin/clang++
yum install -y ccache# 编译
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_C_COMPILER=$(which clang) \
-DCMAKE_CXX_COMPILER=$(which clang++) \
-DENABLE_TESTS=OFF \
-G Ninja ..ninja

7. 运行ClickHouse

编译完成后,可以运行ClickHouse服务器:

./clickhouse-server --config-file=/path/to/config.xml --daemon

常见问题解决

  1. mariadb-connector-c配置错误

    rm -rf contrib/mariadb-connector-c
    git submodule update --init --force contrib/mariadb-connector-c

  2. 内存不足:编译过程需要大量内存,建议至少有16GB内存或设置交换空间。

  3. 依赖缺失:如果编译过程中提示缺少依赖,可以使用yum provides查找并安装相应包。

相关文章:

  • 七天学会SpringCloud分布式微服务——04——Nacos配置中心
  • AI助力游戏设计——从灵感到行动-靠岸篇
  • 蓝牙工作频段与跳频扩频技术(FHSS)详解:面试高频考点与真题解析
  • 【开发杂谈】Auto Caption:使用 Electron 和 Python 开发实时字幕显示软件
  • 024 企业客户管理系统技术解析:基于 Spring Boot 的全流程管理平台
  • PILCO: 基于模型的高效策略搜索方法原理解析
  • 2025.6.27总结
  • 前端Promise从入门到精通全指南
  • fastadmin表格数据逗号分隔的id关联展示数据名称并实现搜索
  • 基于Versoria函数优化协方差更新的改进扩展卡尔曼滤波(MVC-EKF)与经典EKF的对比,附matlab源代码|订阅专栏后可查看完整代码
  • ERP知识有价值,更有温度!
  • react-sequence-diagram时序图组件
  • Java大厂面试实录:从Spring Boot到AI微服务架构的全栈挑战
  • 系统性能优化-7 TCP 四次挥手
  • 【请关注】制造企业机械加工数据脱敏解决方案
  • QGIS导出Shape文件
  • matplotlib 绘制热力图
  • uniapp中表格固定列(Vue)
  • 《游戏元素创世法则:从原子到虚拟生命的全链路解析》—— 网格/刚体/纹理/材质/骨骼/蒙皮/光照/渲染的深度关联指南
  • 广东广电U点-创维E900-S-海思MV310芯片-海兔线刷烧录固件包