2020-04-03 13:23:32 +00:00
---
2022-08-28 14:53:34 +00:00
slug: /en/development/build-cross-osx
2022-04-09 13:29:05 +00:00
sidebar_position: 66
2022-12-22 09:33:11 +00:00
title: How to Build ClickHouse on Linux for macOS
sidebar_label: Build on Linux for macOS
2020-04-03 13:23:32 +00:00
---
2019-09-24 14:43:07 +00:00
2022-04-09 13:29:05 +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.
2022-12-22 09:33:11 +00:00
This is intended for continuous integration checks that run on Linux servers. If you want to build ClickHouse directly on macOS, then proceed with [another instruction ](../development/build-osx.md ).
2019-11-02 08:59:30 +00:00
2022-12-22 09:33:11 +00:00
The cross-build for macOS is based on the [Build instructions ](../development/build.md ), follow them first.
2019-09-24 14:43:07 +00:00
2023-03-30 17:46:11 +00:00
## Install Clang-15
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
2023-03-30 17:46:11 +00:00
sudo echo "deb [trusted=yes] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-15 main" >> /etc/apt/sources.list
sudo apt-get install clang-15
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
Let’ s remember the path where we install `cctools` as ${CCTOOLS}
2019-10-02 14:35:07 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2022-07-08 09:54:00 +00:00
export CCTOOLS=$(cd ~/cctools & & pwd)
2019-10-02 14:35:07 +00:00
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
2019-10-02 14:35:07 +00:00
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
2019-12-02 14:00:21 +00:00
```
2020-03-18 14:55:01 +00:00
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
2022-07-08 09:54:00 +00:00
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
2023-03-30 17:46:11 +00:00
CC=clang-15 CXX=clang++-15 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 can’ t be run on Linux.