Compilation on MacOS
This topic is about how to compile Doris from source with macOS (both x86_64 and arm64).
Environment Requirements
- macOS 12 (Monterey) or newer(both Intel chip and Apple Silicon chips are supported)
- Homebrew
Steps
Use Homebrew to install dependencies.
brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \
python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@16 openjdk@11 npm
tip
The version of jdk installed using brew is 11, because on macOS, the arm64 version of brew does not have version 8 of jdk by default
Compile from source.
bash build.sh
Third-Party Libraries
The Apache Doris Third Party Prebuilt page contains the source code of all third-party libraries. You can download doris-thirdparty-source.tgz to obtain them.
You can download the precompiled third party library from the Apache Doris Third Party Prebuilt page. You may refer to the following commands:
cd thirdparty
rm -rf installed
# Intel chips
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz \
-o - | tar -Jxf -
# Apple Silicon chips
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz \
-o - | tar -Jxf -
# Make sure that protoc and thrift can run successfully.
cd installed/bin
./protoc --version
./thrift --version
When running
protoc
orthrift
, you may meet an error which says the app can not be opened because the developer cannot be verified. Go toSecurity & Privacy
. Click theOpen Anyway
button in theGeneral
pane to confirm your intent to open the app. See https://support.apple.com/en-us/HT202491.
Start-up
Set
file descriptors
(NOTICE: If you have closed the current session, you need to set this variable again).ulimit -n 65536
You can also write this configuration into the initialization files so you don’t need to set the variables again when opening a new terminal session.
# bash
echo 'ulimit -n 65536' >>~/.bashrc
# zsh
echo 'ulimit -n 65536' >>~/.zshrc
Check if the configuration works by executing the following command.
$ ulimit -n
65536
Start BE up
cd output/be/bin
./start_be.sh --daemon
Start FE up
cd output/fe/bin
./start_fe.sh --daemon
FAQ
Fail to start BE up. The log shows:
fail to open StorageEngine, res=file descriptors limit is too small
To fix this, please refer to the “Start-up” section above and reset
file descriptors
.Java Version
The version of jdk installed with brew is 11, because on macOS, the arm64 version of brew does not have version 8 of jdk by default, and you can also download the jdk installation package for installation