源码编译安装
- 进入安装目录,安装目录可根据实际情况修改。
1
cd /home
- 下载源码。
1 2 3 4
git clone --recursive --shallow-submodules https://github.com/ClickHouse/ClickHouse.git -b v24.3.11.7-lts --single-branch --depth=1 cd ClickHouse git submodule sync git submodule update --init --recursive
- 这一步比较慢,同步的文件较多。拉取完源码并更新完子模块后,开始编译。以下为检查脚本,在“/home/ClickHouse”目录下创建检查脚本。
1
vi file_check.sh
- 按“i”进入编辑模式,在文件中添加以下内容。用于确保每个文件都是包含文件的,不是空的。
#!/bin/bash base_dir=$(cd $(dirname "$0")&&pwd) flag=0 for dir in $(ls -d "$base_dir"/contrib/*/); do file_count=$(ls -1 "$dir" | wc -l) if [ "$file_count" -eq 0 ]; then echo "Directory with 0 files: $dir" flag=1 fi done if [ $flag -eq 0 ]; then echo "检查完成 contrib目录下不存在空文件夹" fi
- 按Esc键,输入:wq!,按Enter保存并退出编辑, 然后执行脚本。
1 2
chmod +x file_check.sh ./file_check.sh
- 检查通过屏幕回显如下图。
- 这一步比较慢,同步的文件较多。拉取完源码并更新完子模块后,开始编译。以下为检查脚本,在“/home/ClickHouse”目录下创建检查脚本。
- 编译选项修改。
- 进入“/home/ClickHouse/cmake”目录,打开“cpu_features.cmake”文件。
1 2
cd /home/ClickHouse/cmake vi cpu_features.cmake
- 按“i”进入编辑模式,修改NO_ARMV81_OR_HIGHER(当前版本下为第26行)编译选项下的内容,如下所示。
1
set (COMPILER_FLAGS "${COMPILER_FLAGS} -march=armv8.2-a+simd+crypto+dotprod")
NO_ARMV81_OR_HIGHER编译选项中新增simd指令,同时编译选项中加上-DENABLE_THINLTO=ON,会对性能有收益。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 进入“/home/ClickHouse/cmake”目录,打开“cpu_features.cmake”文件。
- 构建与编译。
1 2 3
cd /home/ClickHouse/ mkdir build cmake -DPARALLEL_COMPILE_JOBS=`nproc` -DENABLE_CLICKHOUSE_SELF_EXTRACTING=1 -DNO_ARMV81_OR_HIGHER=1 -DENABLE_BUILD_PROFILING=ON -DPARALLEL_LINK_JOBS=32 -DENABLE_THINLTO=ON -DENABLE_TESTS=OFF -DENABLE_RUST=OFF -S . -B build
成功构建时终端回显如下。
构建完成后的“build”目录结构如下(通过ls ./build查看)。
1
cmake --build build -j `nproc`
编译完成后会在“build/programs”目录下生成如下文件(通过ll ./build/programs查看)。
- 安装clickhouse,在出现“Enter password for the default user”的字样处直接回车。
./build/programs/clickhouse install
父主题: 移植指南(openEuler)