基礎信息
- OS:MacOS Mojave 10.14.6
- ClickHouse: master branch
- 在Mac上編譯ClickHouse只支持Clang編譯器
- 使用Mac的本地編譯器和gcc都會報錯
編譯過程
安裝Homebrew,已安裝可跳過
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)"
安裝需要的基礎組件
brew install cmake ninja libtool gettext
安裝CLang
檢查
brew info llvm
安裝
brew install llvm
獲取llvm的安裝信息,用于設置編譯
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 ..
報錯
objcopy
Cannot find objcopy.
解決辦法參考參考目錄
注意
- 每次編譯沒成功之前,刪除編譯失敗產生的文件
運行
運行方法
cd /programs
./clickhouse-server server --config-file=../../programs/server/config.xml
注意編譯產生的目錄結構可能不同,需要查看尋找執行文件
使用的配置文件位置也可能不同
可以在ClickHouse源碼根目錄使用下面的命令查找
find ./ -name config.xml
報錯
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.
導入到Clion
導入ClickHouse源碼
將CMakeLists.txt所在根目錄導入到Clion中
配置正確的clang路徑
默認情況下,clion可以探測出正確的編譯器,但是在mac上,至少我的環境中探測出的編譯器是App,并不work
默認探測的編譯器
需要配置一個正取的編譯器
配置系統中正取的編譯器
報錯
WARNING "CCache is not found. We recommend setting it up if you build ClickHouse from source often. "
添加環境變量