在 MacOS 平台上编译
本文介绍如何在 macOS 平台上编译源码。
环境要求
macOS 12 (Monterey) 及以上(Intel 和 Apple Silicon 均支持)
源码编译
1. 使用 Homebrew 安装依赖
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
在 MacOS 上,由于 brew 没有提供 JDK8 的安装包,所以在这里使用了 JDK11。也可以自己手动下载安装 JDK8。
2. 编译源码
bash build.sh
Doris 源码编译时首先会下载三方库源码进行编译,为了节省编译时间,可以下载社区提供的三方库的预编译版本。参见下面的使用预编译三方库提速构建过程。
启动
1. 调大 file descriptors limit
# 通过 ulimit 命令调大 file descriptors limit 限制大小
ulimit -n 65536
# 查看是否生效
$ ulimit -n
# 将该配置写到到启动脚本中,以便下次打开终端会话时不需要再次设置
# 如果是 bash,执行下面语句
echo 'ulimit -n 65536' >>~/.bashrc
# 如果是 zsh,执行下面语句
echo 'ulimit -n 65536' >>~/.zshrc
2. 启动 BE
cd output/be/bin
./start_be.sh --daemon
3. 启动 FE
cd output/fe/bin
./start_fe.sh --daemon
使用预编译三方库进行提速
可以在 Apache Doris Third Party Prebuilt 页面直接下载预编译好的第三方库,省去编译第三方库的过程,参考下面的命令。
cd thirdparty
rm -rf installed
# Intel 芯片
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz \
-o - | tar -Jxf -
# Apple Silicon 芯片
curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz \
-o - | tar -Jxf -
# 保证 protoc 和 thrift 能够正常运行
cd installed/bin
./protoc --version
./thrift --version
常见错误
运行
protoc
和thrift
的时候可能会遇到无法打开,因为无法验证开发者的问题,可以到前往安全性与隐私
。点按通用
面板中的仍要打开
按钮,以确认打算打开该二进制。参考 https://support.apple.com/zh-cn/HT202491。使用 M3 芯片的 Mac 编译时报编译 proto 文件失败 失败日志如下
[ERROR] ... [0:0]: --grpc-java_out: protoc-gen-grpc-java: Plugin failed with status code 1.
此错误的原因可能是由于 Apple 基于 arm 的芯片不支持 x86 平台的软件导致。 可从 https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/下载编译用到的 protoc-gen-grpc-java 软件验证,版本信息可从 fe/fe-core/pom.xml 中 protoc_rosetta profile 下的 grpc.java.artifact 属性查看。 下载后执行如果报错如下错误则表示当前 Mac 不能执行基于 x86 编译的软件:
zsh: bad CPU type in executable: ./protoc-gen-grpc-java-1.34.0-osx-x86_64.exe
可参考 Apple 官方文档 https://support.apple.com/en-us/102527,安装 Rosetta 解决该问题。