跳到主要内容

从源码构建 Goose

什么时候需要自行构建 Goose?

installation page 提供 stablepreview 版本的 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_amd64Linux x86_64 (AMD64) with glibc
linux_arm64Linux AArch64 (ARM64) with glibc
osx_amd64macOS 12+ AMD64 (Intel CPUs)
osx_arm64macOS 12+ ARM64 (Apple Silicon CPUs)
windows_amd64Windows 10+ x86_64 (AMD64)
windows_arm64Windows 10+ AArch64 (ARM64)

这些平台均提供最新 stable 与 preview(nightly)构建。 在某些情况下你仍可能需要源码构建,例如测试未合并的 pull request。 构建说明见:

部分支持的平台

有一些平台属于部分支持。 其中部分平台可分发 Goose 二进制和扩展(或扩展子集);另一些平台可从源码构建。

平台名称说明
linux_amd64_muslLinux x86_64 (AMD64) with musl libc, e.g., Alpine Linux
linux_arm64_muslLinux AArch64 (ARM64) with musl libc, e.g., Alpine Linux
linux_arm64_androidAndroid AArch64 (ARM64)
wasm_ehWebAssembly Exception Handling

下面给出其中部分平台的详细构建说明:

尽力支持的平台

平台名称说明
freebsd_amd64FreeBSD x86_64 (AMD64)
freebsd_arm64FreeBSD AArch64 (ARM64)
wasm_mvpWebAssembly Minimum Viable Product
windows_amd64_mingwWindows 10+ x86_64 (AMD64) with MinGW
windows_arm64_mingwWindows 10+ AArch64 (ARM64) with MinGW

这些平台不在 Goose 社区支持范围内。商业支持请另行咨询。

更多信息见“Unofficial and Unsupported Platforms”页面

过时平台

部分平台在旧版本 Goose 中曾被支持,但现在已不再支持。

平台名称说明
linux_amd64_gcc4Linux x86_64 (AMD64) with GCC 4, e.g., CentOS 7
linux_arm64_gcc4Linux AArch64 (ARM64) with GCC 4, e.g., CentOS 7
windows_amd64_rtoolsWindows 10+ x86_64 (AMD64) for RTools

使用 macOS 与 Linux 的构建说明,也可在 macOS 11CentOS 7/8 等 EOL 平台上尝试构建 Goose。

Amalgamation 构建

Goose 也可构建为一组 C++ 头文件和源码文件(goose/goose.hgoose.cc),约 50 万行代码。 生成方式如下:

python scripts/amalgamation.py

注意:amalgamation 构建仅为尽力支持,不属于官方支持范围。

限制

当前 Goose 在编译阶段存在以下已知限制:

  • 不支持 -march=native 构建标志(即按本机原生指令集编译 Goose)。

故障排查指南

我们提供以下 Goose 构建故障排查指南: