ClickHouse/docs/en/development/build-cross-osx.md

63 lines
2.2 KiB
Markdown
Raw Normal View History

2020-04-03 13:23:32 +00:00
---
2022-08-28 14:53:34 +00:00
slug: /en/development/build-cross-osx
sidebar_position: 66
2022-08-28 15:58:59 +00:00
title: How to Build ClickHouse on Linux for Mac OS X
sidebar_label: Build on Linux for Mac OS X
2020-04-03 13:23:32 +00:00
---
2019-09-24 14:43:07 +00:00
This is for the case when you have a Linux machine and want to use it to build `clickhouse` binary that will run on OS X.
This is intended for continuous integration checks that run on Linux servers. If you want to build ClickHouse directly on Mac OS X, then proceed with [another instruction](../development/build-osx.md).
2019-11-02 08:59:30 +00:00
The cross-build for Mac OS X is based on the [Build instructions](../development/build.md), follow them first.
2019-09-24 14:43:07 +00:00
2022-02-19 17:43:02 +00:00
## Install Clang-14
2019-09-24 14:43:07 +00:00
Follow the instructions from https://apt.llvm.org/ for your Ubuntu or Debian setup.
For example the commands for Bionic are like:
2020-03-20 10:10:48 +00:00
``` bash
2022-02-19 17:43:02 +00:00
sudo echo "deb [trusted=yes] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-14 main" >> /etc/apt/sources.list
sudo apt-get install clang-14
2019-09-24 14:43:07 +00:00
```
2020-07-20 14:33:54 +00:00
## Install Cross-Compilation Toolset {#install-cross-compilation-toolset}
2019-09-24 14:43:07 +00:00
2020-03-20 10:10:48 +00:00
Lets remember the path where we install `cctools` as ${CCTOOLS}
2020-03-20 10:10:48 +00:00
``` bash
export CCTOOLS=$(cd ~/cctools && pwd)
mkdir ${CCTOOLS}
2021-11-21 20:24:28 +00:00
cd ${CCTOOLS}
2019-09-24 14:43:07 +00:00
git clone https://github.com/tpoechtrager/apple-libtapi.git
cd apple-libtapi
INSTALLPREFIX=${CCTOOLS} ./build.sh
2019-09-24 14:43:07 +00:00
./install.sh
cd ..
git clone https://github.com/tpoechtrager/cctools-port.git
cd cctools-port/cctools
2021-11-21 20:24:28 +00:00
./configure --prefix=$(readlink -f ${CCTOOLS}) --with-libtapi=$(readlink -f ${CCTOOLS}) --target=x86_64-apple-darwin
2019-09-24 14:43:07 +00:00
make install
```
Also, we need to download macOS X SDK into the working tree.
2019-09-24 14:43:07 +00:00
2020-03-20 10:10:48 +00:00
``` bash
cd ClickHouse/cmake/toolchain/darwin-x86_64
curl -L 'https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz' | tar xJ --strip-components=1
2019-09-24 14:43:07 +00:00
```
2020-07-20 14:33:54 +00:00
## Build ClickHouse {#build-clickhouse}
2019-09-24 14:43:07 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2019-09-24 14:43:07 +00:00
cd ClickHouse
2021-11-21 20:38:47 +00:00
mkdir build-darwin
cd build-darwin
CC=clang-14 CXX=clang++-14 cmake -DCMAKE_AR:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ar -DCMAKE_INSTALL_NAME_TOOL=${CCTOOLS}/bin/x86_64-apple-darwin-install_name_tool -DCMAKE_RANLIB:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ranlib -DLINKER_NAME=${CCTOOLS}/bin/x86_64-apple-darwin-ld -DCMAKE_TOOLCHAIN_FILE=cmake/darwin/toolchain-x86_64.cmake ..
2021-11-21 20:38:47 +00:00
ninja
2019-09-24 14:43:07 +00:00
```
2020-03-20 10:10:48 +00:00
The resulting binary will have a Mach-O executable format and cant be run on Linux.