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
,成功在斷點出停止執行。