ClickHouse 最简单的编译环境搭建方法

本文主要介绍如何搭建 ClickHouse 的开发环境。虽然 ClickHouse 官方文档对不同系统提供了相应的配置方法,但是在安装依赖时又常会出现各种各样的问题,所以本文给出一种非常快速的环境配置方法来方便读者更好的了解 ClickHouse。虽然 ClickHouse 支持 MacOS 编译,但是 MacOS 不能很好对支持 ClickHouse 所有组件的编译,所以建议还是使用 Linux 进行编译调试。本文是在 CentOS 7 中进行环境配置的。但此方法也适用于 CentOS 和 Ubuntu 各版本。

clang 环境配置

这个主要是得益于 AmosBird 大佬提供的 LDB_TOOLCHAIN 来进行配置,打开链接下载最新版 Vulture 版本的 ldb_toolchain_gen.sh

执行一下命令:

bash ldb_toolchain_gen.sh /data/ldb_toolchain

其中 /data/ldb_toolchain/ 可以执行任意路径。执行成功后会有以下提示:

Congratulations! LDB toolchain is setup at /data/ldb_toolchain/. export PATH="/data/ldb_toolchain/bin":$PATH to take full advantage.
NOTE: LDB toolchain cannot be relocated to other directories manually. Instead, generate it again using ldb_toolchain_gen.sh

将上述的环境变量信息写入 bashrc 中,例如:

echo 'export PATH="/data/ldb_toolchain//bin":$PATH' >> ~/.bashrc

执行 source,并查看版本信息,例如:

source ~/.bashrc

版本信息如下:

[root@centos tool]# clang -v
Ubuntu clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /data/ldb_toolchain/bin
Found candidate GCC installation: /data/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /data/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[root@centos tool]# cmake -version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@centos tool]# ninja --version
1.8.2

到此,编译环境就搭建完毕了,是不是非常傻瓜式。

ClickHouse 编译

先将 ClickHouse 代码 clone 到本地:

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

再 cd 到 ClickHouse 目录下,先要将 ClickHouse 的 submodule 先下载下来:

cd ClickHouse
# 下载 submodule 的时间会比较长,请耐心等待
git submodule update --init --recursive

再在 ClickHouse 目录中创建 build 目录,执行 cmake 和 ninja 进行编译:

mkdir build
cd build
# 使用 debug 编译便于后面进行调试
cmake -D CMAKE_BUILD_TYPE=Debug ..
# 编译过程也比较长,请耐心等待
ninja

到此,代码就编译完成了。

ClickHouse 断点调试

很多时候开发者都想通过断点的方式跟踪下代码的执行情况,大多数文章是推荐 GDB 进行 Debug,大佬们对 GDB 很熟悉的话会觉得非常好用,但是初学者会觉得非常难用,确实很多场景下开发者仅仅是想看看变量值,所以本文推荐的是使用 VS Code 进行调试,尽可能做到最简单最方便的让开发者快速的跑起来代码。

VS Code 插件

Remote - SSH

由于本文推荐的是 CentOS7,所以会涉及到远程调试,需要安装 Remote - SSH 插件来进行远程连接,这个网上有很多方法来进行安装和连接开发机,这里不再赘述。

clangd

同样是在 VS Code 的 Extensions 中直接搜索安装即可,安装完 clangd 后需要重启一下 VS Code,此时 clangd 就会识别 ClickHouse 编译出的 ./build/compile_commands.json 进行加载,此时,通过 Ctrl + 左键 即可自由在方法间进行跳转,使用 Control + - 就可以完成回跳,非常方便。

GitLens

这是一个非常好用的 git 插件,安装方式也是在 Extensions 中直接搜索安装即可,安装后,当鼠标点击到代码上会在后面提示出这行代码的提交人以及 commitid 等信息,而且还提供查询 git 提交历史等功能。

CodeLLDB

这是个用于执行 lldb 调试的插件,可以通过 VS Code 进行可视化断点调试。

到此,VS Code 的插件已经配置完成,其余插件不必须,有自己习惯使用可以安装。

VS Code 调试

在 ClickHouse 目录下创建 .vscode/launch.json,内容如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/build/programs/clickhouse-server",
            "args": ["--config-file=${workspaceFolder}/build/programs/config.xml"],
            "setupCommands": [
                {
                    "description": "pretty",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

其中,program 为 clickhouse-server 二进制路径,args 为 ClickHouse 配置文件路径,${workspaceFolder} 表示当前路径(即 ClickHouse 目录)。

既然配置了 config.xml 的路径,那要在该位置( ./build/programs 下)创建 config.xml 和 users.xml。配置信息详见:ClickHouse 集群搭建

到此,就可以点击 VS Code 的调试按钮启动 clickhouse-server 了。随意在代码中添加断点即可完成断点调试。


欢迎添加微信:xiedeyantu,讨论技术问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只努力的微服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值