編譯ClickHouse源碼 導(dǎo)入CLion

基礎(chǔ)信息

  • OS:MacOS Mojave 10.14.6
  • ClickHouse: master branch
  • 在Mac上編譯ClickHouse只支持Clang編譯器
  • 使用Mac的本地編譯器和gcc都會(huì)報(bào)錯(cuò)

編譯過(guò)程

安裝Homebrew,已安裝可跳過(guò)

brew -v
Homebrew 2.5.9
Homebrew/homebrew-core (git revision 58b4b; last commit 2020-11-11)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝需要的基礎(chǔ)組件

brew install cmake ninja libtool gettext

安裝CLang

檢查

brew info llvm

安裝

brew install llvm

獲取llvm的安裝信息,用于設(shè)置編譯

To use the bundled libc++ please add the following LDFLAGS:
  LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"

llvm is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have llvm first in your PATH run:
  echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> /Users/${user}/.bash_profile

For compilers to find llvm you may need to set:
  export LDFLAGS="-L/usr/local/opt/llvm/lib"
  export CPPFLAGS="-I/usr/local/opt/llvm/include"

編譯

cd ClickHouse
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_BUILD_TYPE=Debug
ninja
cd ..

報(bào)錯(cuò)

objcopy

Cannot find objcopy.

解決辦法參考參考目錄

注意

  • 每次編譯沒(méi)成功之前,刪除編譯失敗產(chǎn)生的文件

運(yùn)行

運(yùn)行方法

cd /programs
./clickhouse-server server --config-file=../../programs/server/config.xml 

注意編譯產(chǎn)生的目錄結(jié)構(gòu)可能不同,需要查看尋找執(zhí)行文件
使用的配置文件位置也可能不同
可以在ClickHouse源碼根目錄使用下面的命令查找

find ./ -name config.xml

報(bào)錯(cuò)

Code: 102. DB::NetException: Unexpected packet from server localhost:9000 (expected Hello or Exception, got Unknown packet)
lsof -i:9000
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    2989 ${user}   24u  IPv4 0x78677fdd48cdd7a7      0t0  TCP localhost:cslistener (LISTEN)

kill 掉

 kill 2989

再次連接成功

./clickhouse-client -m
ClickHouse client version 20.12.1.1.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.12.1 revision 54442.

導(dǎo)入到Clion

導(dǎo)入ClickHouse源碼

將CMakeLists.txt所在根目錄導(dǎo)入到Clion中

配置正確的clang路徑

默認(rèn)情況下,clion可以探測(cè)出正確的編譯器,但是在mac上,至少我的環(huán)境中探測(cè)出的編譯器是App,并不work


默認(rèn)探測(cè)的編譯器

需要配置一個(gè)正取的編譯器


配置系統(tǒng)中正取的編譯器

報(bào)錯(cuò)

WARNING "CCache is not found. We recommend setting it up if you build ClickHouse from source often. "

添加環(huán)境變量

參考

How to Build ClickHouse on Mac OS
ClickHouse 開(kāi)發(fā)
設(shè)置CMake使用的編譯器
Cannot find objcopy
安裝LLVM/Clang on OS X
How to Use CCache with CMake?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容