clickhouse语句_Clickhouse源码编译调试

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 22:15   112   0

1. 环境

MacOS 10.15.3

CLion

Clickhouse 20.8.1.1

2. 代码编译

可按官网进行配置,The Beginner ClickHouse Developer Instruction

  1. 工具准备
    1. brew
      安装命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    2. 使用brew安装编译器工具库
      安装命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" (如果这里没法正确安装可以在网上直接下载安装包安装,然后配置环境变量)
  1. 拉取Clickhouse源码
    命令:git clone --recursive git@github.com:ClickHouse/ClickHouse.git
    可以在github按需求拉取对应版本代码。
  2. 本地编译源码
    命令:
    $ 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文件

952fccf507059230f31cc1a4498f44ae.png

3.1 运行本地服务

命令: ../../build/programs/clickhouse server /Users/test/users.xml

默认情况下,Clickhouse会在本地找config文件,可以通过参数--config-file手动指定

713c125902500381b61dc6c3cbcc27da.png

执行结果如上。

3.2 调试

在CLion的菜单栏中点击run,选在Attach to Process

89637aa3a799901d03b875e5f4991b03.png

在弹出框中输入clikchouse,选择对应进程。

118ecc8e720134e68f89d314923f6c6a.png

没问题的话,就可以正常打断点调试了。

尝试本地客户端连接,执行sql。

命令:

../../build/programs/clickhouse client --host 127.0.0.1 --user admin --password 123

83f4cd7b0173042609ba18911e2a373d.png

执行语句: select version,成功在断点出停止执行。

69e7cb745cf4c4c7dff771691465444c.png
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP