如何在Linux中编译Mac OS X ClickHouse

Linux机器也可以编译运行在OS X系统的clickhouse二进制包,这可以用于在Linux上跑持续集成测试。如果要在Mac OS X上直接构建ClickHouse,请参考另外一篇指南: https://clickhouse.tech/docs/zh/development/build_osx/

Mac OS X的交叉编译基于以下构建说明,请首先遵循它们。

安装Clang-8

按照https://apt.llvm.org/中的说明进行Ubuntu或Debian安装。
例如,安装Bionic的命令如下:

  1. sudo echo "deb [trusted=yes] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main" >> /etc/apt/sources.list
  2. sudo apt-get install clang-8

安装交叉编译工具集

我们假设安装 cctools 在 ${CCTOOLS} 路径下

  1. mkdir ${CCTOOLS}
  2. git clone https://github.com/tpoechtrager/apple-libtapi.git
  3. cd apple-libtapi
  4. INSTALLPREFIX=${CCTOOLS} ./build.sh
  5. ./install.sh
  6. cd ..
  7. git clone https://github.com/tpoechtrager/cctools-port.git
  8. cd cctools-port/cctools
  9. ./configure --prefix=${CCTOOLS} --with-libtapi=${CCTOOLS} --target=x86_64-apple-darwin
  10. make install
  11. cd ${CCTOOLS}
  12. wget https://github.com/phracker/MacOSX-SDKs/releases/download/10.14-beta4/MacOSX10.14.sdk.tar.xz
  13. tar xJf MacOSX10.14.sdk.tar.xz

编译 ClickHouse

  1. cd ClickHouse
  2. mkdir build-osx
  3. CC=clang-8 CXX=clang++-8 cmake . -Bbuild-osx -DCMAKE_SYSTEM_NAME=Darwin \
  4. -DCMAKE_AR:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ar \
  5. -DCMAKE_RANLIB:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ranlib \
  6. -DLINKER_NAME=${CCTOOLS}/bin/x86_64-apple-darwin-ld \
  7. -DSDK_PATH=${CCTOOLS}/MacOSX10.14.sdk
  8. ninja -C build-osx

生成的二进制文件将具有Mach-O可执行格式,并且不能在Linux上运行。