1. 环境
MacOS 10.15.3 CLion Clickhouse 20.8.1.12. 代码编译
可按官网进行配置,The Beginner ClickHouse Developer Instruction
- 工具准备
- brew 安装命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 使用brew安装编译器工具库 安装命令:
(如果这里没法正确安装可以在网上直接下载安装包安装,然后配置环境变量)/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- brew 安装命令:
-
拉取Clickhouse源码
命令:
可以在github按需求拉取对应版本代码。git clone --recursive [email protected]:ClickHouse/ClickHouse.git
-
本地编译源码
命令:
$ cd ClickHouse #创建build目录 $ mkdir build #执行编译命令 $ cmake .. -DCMAKE_CXX_COMPILER=`which clang++` -DCMAKE_C_COMPILER=`which clang` $ ninja $ cd ..
cmake .. -DCMAKE_CXX_COMPILER=which clang++ -DCMAKE_C_COMPILER=which clang
命令时可能会出现如下报错:
CMake Error at CMakeLists.txt:149 (message):
Cannot find objcopy.
解决步骤如下:
-
brew install binutils
-
mdfind -name objcopy
执行完之后后应该回返回类似下面的查询结果:
/Users/mac/Documents/GitHub/ClickHouse/contrib/llvm/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy
/usr/local/Cellar/binutils/2.35/share/man/man1/objcopy.1
/usr/local/Cellar/binutils/2.35/x86_64-apple-darwin19.5.0/bin/objcopy
/usr/local/Cellar/binutils/2.35/bin/objcopy
objcopy 的目录为/usr/local/Cellar/binutils/2.35/bin/objcopy
- 修改CMakeLists文件,文件定位到出错行
find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy")
修改后: find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy" PATHS "/usr/local/homebrew/Cellar/binutils/2.35/x86_64-apple-darwin19.3.0/bin/")
- 删除之前的build文件重新编译
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_CXX_COMPILER=`which clang++` -DCMAKE_C_COMPILER=`which clang` -DCMAKE_BUILD_TYPE=Debug -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
3. 本地调试
编译完代码之后会在
../../build/programs
目录下生成一个
Clickhouse
文件
3.1 运行本地服务
命令:
../../build/programs/clickhouse server /Users/test/users.xml
默认情况下,Clickhouse会在本地找config文件,可以通过参数
--config-file
手动指定
执行结果如上。
3.2 调试
在CLion的菜单栏中点击
run,选在
Attach to Process在弹出框中输入clikchouse,选择对应进程。
没问题的话,就可以正常打断点调试了。
尝试本地客户端连接,执行sql。
命令:
../../build/programs/clickhouse client --host 127.0.0.1 --user admin --password 123
执行语句:
select version
,成功在断点出停止执行。