2020-04-03 13:23:32 +00:00
---
2022-08-28 14:53:34 +00:00
slug: /en/development/build-osx
2022-04-09 13:29:05 +00:00
sidebar_position: 65
2022-12-22 09:33:11 +00:00
sidebar_label: Build on macOS
title: How to Build ClickHouse on macOS
description: How to build ClickHouse on macOS
2020-04-03 13:23:32 +00:00
---
2022-04-09 13:29:05 +00:00
:::info You don't have to build ClickHouse yourself!
You can install pre-built ClickHouse as described in [Quick Start ](https://clickhouse.com/#quick-start ). Follow **macOS (Intel)** or **macOS (Apple silicon)** installation instructions.
:::
2021-11-26 17:10:34 +00:00
2022-05-11 21:09:38 +00:00
The build works on x86_64 (Intel) and arm64 (Apple Silicon) based on macOS 10.15 (Catalina) or higher with Homebrew's vanilla Clang.
2022-04-09 13:29:05 +00:00
:::note
2022-05-11 21:09:38 +00:00
It is also possible to compile with Apple's XCode `apple-clang` or Homebrew's `gcc` , but it's strongly discouraged.
2022-04-09 13:29:05 +00:00
:::
2017-12-28 15:13:23 +00:00
2020-03-20 10:10:48 +00:00
## Install Homebrew {#install-homebrew}
2017-12-28 15:13:23 +00:00
2022-05-11 21:09:38 +00:00
First install [Homebrew ](https://brew.sh/ )
2017-12-28 15:13:23 +00:00
2022-06-02 13:01:59 +00:00
## For Apple's Clang (discouraged): Install XCode and Command Line Tools {#install-xcode-and-command-line-tools}
2021-04-02 13:31:20 +00:00
2022-06-02 13:01:59 +00:00
Install the latest [XCode ](https://apps.apple.com/am/app/xcode/id497799835?mt=12 ) from App Store.
2021-04-02 13:31:20 +00:00
Open it at least once to accept the end-user license agreement and automatically install the required components.
2021-05-27 19:48:20 +00:00
Then, make sure that the latest Command Line Tools are installed and selected in the system:
2021-04-02 13:31:20 +00:00
``` bash
2021-04-08 09:17:58 +00:00
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
2021-04-02 13:31:20 +00:00
```
2020-03-20 10:10:48 +00:00
## Install Required Compilers, Tools, and Libraries {#install-required-compilers-tools-and-libraries}
2017-12-28 15:13:23 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2021-04-08 09:17:58 +00:00
brew update
2022-09-02 09:13:36 +00:00
brew install ccache cmake ninja libtool gettext llvm gcc binutils grep findutils
2017-12-28 15:13:23 +00:00
```
2020-03-20 10:10:48 +00:00
## Checkout ClickHouse Sources {#checkout-clickhouse-sources}
2017-12-28 15:13:23 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2021-04-08 09:17:58 +00:00
git clone --recursive git@github.com:ClickHouse/ClickHouse.git
# ...alternatively, you can use https://github.com/ClickHouse/ClickHouse.git as the repo URL.
2019-09-23 15:31:46 +00:00
```
2020-03-20 10:10:48 +00:00
2021-04-02 13:31:20 +00:00
## Build ClickHouse {#build-clickhouse}
2021-11-26 17:10:34 +00:00
To build using Homebrew's vanilla Clang compiler (the only **recommended** way):
2020-03-20 10:10:48 +00:00
``` bash
2021-04-08 09:17:58 +00:00
cd ClickHouse
mkdir build
2022-05-15 10:19:02 +00:00
export PATH=$(brew --prefix llvm)/bin:$PATH
2022-05-11 21:09:38 +00:00
export CC=$(brew --prefix llvm)/bin/clang
export CXX=$(brew --prefix llvm)/bin/clang++
cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B build
cmake --build build
# The resulting binary will be created at: build/programs/clickhouse
2017-12-28 15:13:23 +00:00
```
2022-06-02 13:01:59 +00:00
To build using XCode native AppleClang compiler in XCode IDE (this option is only for development builds and workflows, and is **not recommended** unless you know what you are doing):
2017-12-28 15:13:23 +00:00
2021-04-02 13:31:20 +00:00
``` bash
2021-04-08 09:17:58 +00:00
cd ClickHouse
rm -rf build
mkdir build
cd build
2021-11-26 17:10:34 +00:00
XCODE_IDE=1 ALLOW_APPLECLANG=1 cmake -G Xcode -DCMAKE_BUILD_TYPE=Debug -DENABLE_JEMALLOC=OFF ..
cmake --open .
2022-06-02 13:01:59 +00:00
# ...then, in XCode IDE select ALL_BUILD scheme and start the building process.
2021-11-26 17:10:34 +00:00
# The resulting binary will be created at: ./programs/Debug/clickhouse
2021-04-02 13:31:20 +00:00
```
2021-11-26 17:10:34 +00:00
To build using Homebrew's vanilla GCC compiler (this option is only for development experiments, and is **absolutely not recommended** unless you really know what you are doing):
2020-12-13 08:10:07 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2021-04-08 09:17:58 +00:00
cd ClickHouse
mkdir build
2022-05-15 10:19:02 +00:00
export PATH=$(brew --prefix binutils)/bin:$PATH
export PATH=$(brew --prefix gcc)/bin:$PATH
2022-05-11 21:09:38 +00:00
export CC=$(brew --prefix gcc)/bin/gcc-11
export CXX=$(brew --prefix gcc)/bin/g++-11
cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B build
cmake --build build
# The resulting binary will be created at: build/programs/clickhouse
2017-12-28 15:13:23 +00:00
```
2020-03-20 10:10:48 +00:00
## Caveats {#caveats}
2017-12-28 15:13:23 +00:00
2022-06-03 11:50:17 +00:00
If you intend to run `clickhouse-server` , make sure to increase the system’ s `maxfiles` variable.
2018-07-18 10:00:53 +00:00
2022-06-02 13:01:59 +00:00
:::note
2022-04-09 13:29:05 +00:00
You’ ll need to use sudo.
:::
2018-07-18 10:00:53 +00:00
2020-07-20 14:29:13 +00:00
To do so, create the `/Library/LaunchDaemons/limit.maxfiles.plist` file with the following content:
2020-03-20 10:10:48 +00:00
``` xml
2018-07-18 10:00:53 +00:00
<?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
< plist version = "1.0" >
< dict >
< key > Label< / key >
< string > limit.maxfiles< / string >
< key > ProgramArguments< / key >
< array >
< string > launchctl< / string >
< string > limit< / string >
< string > maxfiles< / string >
< string > 524288< / string >
< string > 524288< / string >
< / array >
< key > RunAtLoad< / key >
< true / >
< key > ServiceIPC< / key >
< false / >
< / dict >
< / plist >
```
2021-09-21 15:55:52 +00:00
Give the file correct permissions:
2020-03-20 10:10:48 +00:00
``` bash
2021-04-08 09:17:58 +00:00
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
2018-07-18 10:00:53 +00:00
```
2021-09-21 15:55:52 +00:00
Validate that the file is correct:
``` bash
plutil /Library/LaunchDaemons/limit.maxfiles.plist
```
Load the file (or reboot):
``` bash
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```
2018-07-18 10:00:53 +00:00
2021-09-21 15:55:52 +00:00
To check if it’ s working, use the `ulimit -n` or `launchctl limit maxfiles` commands.
2018-10-16 10:47:17 +00:00
2021-11-26 17:10:34 +00:00
## Running ClickHouse server
2021-05-05 14:35:28 +00:00
2021-11-26 17:10:34 +00:00
``` bash
2021-05-05 14:56:20 +00:00
cd ClickHouse
./build/programs/clickhouse-server --config-file ./programs/server/config.xml
2021-05-05 14:35:28 +00:00
```