从源码构建 Goose
什么时候需要自行构建 Goose?
installation page 提供 stable 与 preview 版本的 Goose 二进制。
多数场景建议直接使用这些二进制。
当你运行在实验性平台(如 Raspberry Pi),或需要针对未合并 PR 构建时,可基于 GitHub 上的 goose/goose 仓库 从源码构建。
本页说明构建步骤。
前置条件
Goose 需要 CMake 和支持 C++11 的编译器(如 GCC、Apple-Clang、MSVC)。 另外建议使用 Ninja build system,它会自动并行化构建流程。
快速开始
构建流程由 Makefile 封装。
目标和配置标志请参阅 Build Configuration。
make
make release # same as plain make
make debug
GEN=ninja make # for use with Ninja
BUILD_BENCHMARK=1 make # build with benchmarks
平台
完全支持的平台
Goose 完全支持 Linux、macOS 和 Windows。这些平台都提供 x86_64(amd64)与 AArch64(ARM64)构建,并且几乎所有扩展都会分发到这些平台。
| 平台名称 | 说明 |
|---|---|
linux_amd64 | Linux x86_64 (AMD64) with glibc |
linux_arm64 | Linux AArch64 (ARM64) with glibc |
osx_amd64 | macOS 12+ AMD64 (Intel CPUs) |
osx_arm64 | macOS 12+ ARM64 (Apple Silicon CPUs) |
windows_amd64 | Windows 10+ x86_64 (AMD64) |
windows_arm64 | Windows 10+ AArch64 (ARM64) |
这些平台均提供最新 stable 与 preview(nightly)构建。 在某些情况下你仍可能需要源码构建,例如测试未合并的 pull request。 构建说明见:
部分支持的平台
有一些平台属于部分支持。 其中部分平台可分发 Goose 二进制和扩展(或扩展子集);另一些平台可从源码构建。
| 平台名称 | 说明 |
|---|---|
linux_amd64_musl | Linux x86_64 (AMD64) with musl libc, e.g., Alpine Linux |
linux_arm64_musl | Linux AArch64 (ARM64) with musl libc, e.g., Alpine Linux |
linux_arm64_android | Android AArch64 (ARM64) |
wasm_eh | WebAssembly Exception Handling |
下面给出其中部分平台的详细构建说明:
尽力支持的平台
| 平台名称 | 说明 |
|---|---|
freebsd_amd64 | FreeBSD x86_64 (AMD64) |
freebsd_arm64 | FreeBSD AArch64 (ARM64) |
wasm_mvp | WebAssembly Minimum Viable Product |
windows_amd64_mingw | Windows 10+ x86_64 (AMD64) with MinGW |
windows_arm64_mingw | Windows 10+ AArch64 (ARM64) with MinGW |
这些平台不在 Goose 社区支持范围内。商业支持请另行咨询。
更多信息见“Unofficial and Unsupported Platforms”页面。
过时平台
部分平台在旧版本 Goose 中曾被支持,但现在已不再支持。
| 平台名称 | 说明 |
|---|---|
linux_amd64_gcc4 | Linux x86_64 (AMD64) with GCC 4, e.g., CentOS 7 |
linux_arm64_gcc4 | Linux AArch64 (ARM64) with GCC 4, e.g., CentOS 7 |
windows_amd64_rtools | Windows 10+ x86_64 (AMD64) for RTools |
使用 macOS 与 Linux 的构建说明,也可在 macOS 11、CentOS 7/8 等 EOL 平台上尝试构建 Goose。
Amalgamation 构建
Goose 也可构建为一组 C++ 头文件和源码文件(goose/goose.h 与 goose.cc),约 50 万行代码。
生成方式如下:
python scripts/amalgamation.py
注意:amalgamation 构建仅为尽力支持,不属于官方支持范围。
限制
当前 Goose 在编译阶段存在以下已知限制:
- 不支持
-march=native构建标志(即按本机原生指令集编译 Goose)。
故障排查指南
我们提供以下 Goose 构建故障排查指南: