setup_env.sh 负责搭建 GXF 构建环境:下载/编译全部第三方依赖并导出环境变量。
本文档罗列其全部依赖的下载方式、构建方法、安装路径。
- 依赖根目录:
GXF_DEPS_DIR(默认 <repo>/deps)
- 安装前缀:
GXF_DEPS_PREFIX = $GXF_DEPS_DIR/install
- 版本与 bazel
.bzl 文件中固定的版本一一对应;重复执行为幂等(deps/.stamps/ 记录完成标记)
- 清理:
source ./setup_env.sh clean(删除整个 deps/)
目录结构
deps/
├── dist/ # 下载的归档文件(tar.gz/zip)
├── src/ # 解包/克隆的源码树(约 1.6 GB,含 grpc 与 boost 源码)
├── build/ # cmake 构建目录(约 226 MB)
├── install/ # 安装前缀 GXF_DEPS_PREFIX(约 104 MB)
│ ├── include/ # 全部头文件(yaml-cpp, grpcpp, absl, pybind11, ...)
│ ├── lib/ # 90 个静态库(.a)
│ └── bin/ # protoc, grpc_cpp_plugin 等工具
├── proto/ # 供代码生成的 .proto(gRPC 的 health.proto)
├── gen/ # make 阶段由 protoc 生成的 pb 代码
└── .stamps/ # 各依赖的完成标记(幂等跳过依据)
一、系统与环境依赖(不下载,由本机/变量提供)
| 依赖 |
指定方式 |
要求 |
用途 |
| CUDA toolkit |
CUDA_HOME(默认 /usr/local/cuda) |
必须 12.6.x ;需 include/、lib64/、bin/nvcc |
全部 CUDA 相关目标;-isystem $CUDA_HOME/include,链接 -L$CUDA_HOME/lib64 |
| UCX |
UCX_HOME(默认 /opt/ucx-1.18.0) |
需含 lib/、include/ |
仅校验并导出(35 个 release 目标不直接链接;为 ucx 扩展预留) |
| Python |
GXF_PYTHON(默认取 python3 版本) |
pythonX.Y + 头文件 + 共享 libpython(pythonX.Y-dev、libpythonX.Y-dev) |
pybind 模块、python_codelet |
| OpenSSL |
系统包 libssl-dev |
OpenSSL 3.x(Ubuntu 22.04 为 3.0.2) |
cpprestsdk(https 支持)→ libgxf_http.so 链接 -lssl -lcrypto |
| 设备端编译器 |
DEVCC(默认 $CUDA_HOME/bin/nvcc) |
可编译 CUDA 源 |
gxf/cuda/tests/convolution.cu.cpp |
| 构建工具 |
apt |
g++-11、ld.gold(binutils-gold)、cmake、git、curl、patch、rsync、tar、unzip、make、ar |
编译/链接/下载 |
二、下载并构建的依赖(11 项)
1. lss(linux-syscall-support @ 93426bd)
| 项 |
内容 |
| 用途 |
breakpad 的编译依赖(third_party/lss/linux_syscall_support.h) |
| 下载 |
https://chromium.googlesource.com/linux-syscall-support/+archive/93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz |
| sha256 |
不固定(googlesource 动态生成归档,无稳定校验值) |
| 补丁 |
com_nvidia_gxf/third_party/lss_gcc.patch(patch -p0,移除两处内联汇编 clobber) |
| 构建 |
无(纯头文件) |
| 安装 |
install/include/third_party/lss/linux_syscall_support.h |
| 消费方 |
breakpad(编译期)→ gxe |
2. yaml-cpp 0.6.3
| 项 |
内容 |
| 用途 |
GXF 参数/YAML 解析(core、std、behavior_tree、test 等) |
| 下载 |
https://developer.nvidia.com/isaac/download/third_party/yaml-cpp-0-6-3-tar-gz |
| sha256 |
f38a7a7637993943c4c890e352b1fa3f3bf420535634e9a506d9a21c3890d505 |
| 构建 |
cmake:-DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF -DYAML_CPP_BUILD_CONTRIB=OFF -DBUILD_SHARED_LIBS=OFF |
| 安装 |
install/include/yaml-cpp/、install/lib/libyaml-cpp.a |
| 消费方 |
几乎所有扩展(静态链接;libgxf_core.so 用 --exclude-libs 隐藏其符号) |
3. gflags @ e292e04
| 项 |
内容 |
| 用途 |
gxe 命令行参数解析 |
| 下载 |
https://developer.nvidia.com/isaac/download/third_party/gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz |
| sha256 |
a4c5171355e67268b4fd2f31c3f7f2d125683d12e0686fc14893a3ca8c803659 |
| 构建 |
cmake:-DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DGFLAGS_REGISTER_INSTALL_PREFIX=OFF -DGFLAGS_BUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF |
| 安装 |
install/include/gflags/*.h(cmake 生成,与 bazel genrule 等价)、install/lib/libgflags.a(另有 libgflags_nothreads.a) |
| 消费方 |
gxe |
4. breakpad @ bae713b(+ lss)
| 项 |
内容 |
| 用途 |
gxe 崩溃转储(crash handler) |
| 下载 |
https://github.com/google/breakpad/archive/bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz |
| sha256 |
65a0dd6db9065dc539ddf35f969d10b5ad8a7b2c305d2dc5a66a1f8d46f4a904 |
| 预处理 |
将 lss 头复制到源码树 src/third_party/lss/ |
| 构建 |
不用 autotools :按 third_party/breakpad.BUILD 的 22 个源文件用 g++ 直接编译(-std=c++17 -O2 -fPIC -DHAVE_GETCONTEXT -Wno-maybe-uninitialized -Wno-array-bounds -I src),ar rcsD 打包 |
| 安装 |
install/lib/libbreakpad.a;头文件按 src/ 布局装到 install/include/breakpad/ |
| 消费方 |
gxe |
5. magic_enum 0.9.3
| 项 |
内容 |
| 用途 |
枚举反射(gxf/core/expected_macro.hpp) |
| 下载 |
https://github.com/Neargye/magic_enum/archive/refs/tags/v0.9.3.zip |
| sha256 |
2ac5f5f0591c8f587b53b89c3ef64c85cc24ebaaa389a659c6bf36a0aa192fe6 |
| 构建 |
无(纯头文件),复制 include/magic_enum*.hpp |
| 安装 |
install/include/magic_enum*.hpp(平铺) |
| 消费方 |
gxf/core 及全部下游 |
6. dlpack 0.8
| 项 |
内容 |
| 用途 |
tensor 互操作(gxf/std/tensor、dlpack_utils) |
| 下载 |
https://github.com/dmlc/dlpack/archive/refs/tags/v0.8.tar.gz |
| sha256 |
cf965c26a5430ba4cc53d61963f288edddcd77443aa4c85ce722aaf1e2f29513 |
| 构建 |
无(纯头文件),复制 include/dlpack/ |
| 安装 |
install/include/dlpack/ |
| 消费方 |
gxf/std 及下游(serialization、multimedia、test_cuda 等) |
7. nlohmann-json 3.10.5
| 项 |
内容 |
| 用途 |
JSON 解析(job_statistics、graph_driver_worker_common) |
| 下载 |
https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.zip |
| sha256 |
ea4b0084709fb934f92ca0a68669daa0fe6f2a2c6400bf353454993a834bb0bb |
| 构建 |
无(纯头文件),复制 single_include/nlohmann/ |
| 安装 |
install/include/nlohmann/ |
| 消费方 |
gxf/std 及下游 |
8. pybind11(版本随 GXF_PYTHON)
| 项 |
内容 |
| 用途 |
全部 pybind 模块 + python_codelet |
| 版本策略 |
Python ≤3.12 → 2.11.1 ;3.13 → 2.13.6 ;≥3.14 → 3.0.1 |
| 下载 |
https://github.com/pybind/pybind11/archive/refs/tags/v<ver>.tar.gz |
| sha256 |
2.11.1: d475978da0cdc2d43b73f30910786759d593a9d8ee05b1b6846d1eb16c6d2e0c 2.13.6: e08cb87f4773da97fa7b5f035de8763abc656d87d5773e62f6da0587d1f0ec20 3.0.1: 741633da746b7c738bb71f1854f957b9da660bcd2dce68d71949037f0969d0ca |
| 构建 |
无(纯头文件),复制 include/pybind11/ |
| 安装 |
install/include/pybind11/ |
| 消费方 |
core_pybind、7 个 std pybind、cuda_pybind、pycodelet、libgxf_python_codelet.so |
9. boost 1.80.0(仅当系统无 boost ≥1.74 时构建)
| 项 |
内容 |
| 用途 |
cpprestsdk 的依赖(asio/system/thread 等) |
| 下载 |
https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz |
| sha256 |
4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 |
| 构建 |
./bootstrap.sh --with-libraries=system,thread,chrono,atomic,regex,date_time,filesystem,random,container && ./b2 -j$GXF_JOBS variant=release link=static threading=multi cxxflags=-fPIC stage |
| 安装 |
不装进 prefix ,直接从源码树使用:头文件 deps/src/boost_1_80_0/,静态库 deps/src/boost_1_80_0/stage/lib/;经 BOOST_INCLUDE_DIR / BOOST_LIBRARY_DIR 导出 |
| 系统分支 |
若 /usr/include/boost/version.hpp ≥ 1.74 且存在 libboost_system,则直接用系统 boost(BOOST_INCLUDE_DIR=/usr/include,BOOST_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu) |
| 消费方 |
cpprestsdk(编译与链接)→ libgxf_http.so 链接 -lboost_system -lboost_thread -lboost_chrono -lboost_atomic -lboost_regex -lboost_date_time -lboost_filesystem -lboost_random |
10. gRPC 1.48.0(含 protobuf 21.7 / abseil / re2 / c-ares / zlib / boringssl)
| 项 |
内容 |
| 用途 |
libgxf_grpc.so(IPC gRPC 传输) |
| 下载 |
git clone --depth 1 --branch v1.48.0 --recurse-submodules --shallow-submodules --jobs 8 https://github.com/grpc/grpc(约 300 MB) |
| 构建 |
cmake:-DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF -DgRPC_INSTALL=ON -DgRPC_ABSL_PROVIDER=module -DgRPC_CARES_PROVIDER=module -DgRPC_PROTOBUF_PROVIDER=module -DgRPC_RE2_PROVIDER=module -DgRPC_SSL_PROVIDER=module -DgRPC_ZLIB_PROVIDER=module -DgRPC_BENCHMARK_PROVIDER=none(全部子模块静态、PIC) |
| 安装 |
头文件:install/include/{grpcpp,grpc,grpc++,absl,google/protobuf,re2,upb,...} 静态库(90 个中的主要者):libgrpc++.a、libgrpc.a、libgpr.a、libaddress_sorting.a、libupb.a、libprotobuf.a、libre2.a、libcares.a、libz.a、libssl.a+libcrypto.a(boringssl)、65 个 libabsl_*.a 工具:install/bin/protoc、install/bin/grpc_cpp_plugin(Makefile 代码生成用) |
| 附带 |
src/proto/grpc/health/v1/health.proto 复制到 deps/proto/(安装版 gRPC 不带 health 模块,grpc_client.cpp 需要) |
| 消费方 |
libgxf_grpc.so(--start-group 静态链接全部上述库,.so 无 grpc NEEDED) |
11. cpprestsdk 2.10.18
| 项 |
内容 |
| 用途 |
libgxf_http.so(IPC HTTP 传输) |
| 下载 |
https://github.com/microsoft/cpprestsdk/archive/refs/tags/2.10.18.tar.gz |
| sha256 |
6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb |
| 构建 |
cmake:-DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCPPREST_EXCLUDE_WEBSOCKETS=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DWERROR=OFF + BOOST_ROOT/Boost_INCLUDE_DIR/Boost_LIBRARY_DIR(系统 OpenSSL,不打 third_party/cmake/cpprestsdk.patch------该补丁是为 boringssl CONFIG 模式准备的) |
| 安装 |
install/include/cpprest/、install/lib/libcpprest.a |
| 消费方 |
libgxf_http.so(链接 libcpprest.a + boost + 系统 -lssl -lcrypto) |
三、导出的环境变量(供 Makefile 使用)
| 变量 |
值(默认) |
说明 |
GXF_ROOT / GXF_WS |
<repo> / <repo>/com_nvidia_gxf |
仓库/源码根 |
GXF_DEPS_DIR / GXF_DEPS_PREFIX |
<repo>/deps / .../install |
依赖根/安装前缀 |
GXF_GEN_DIR / GXF_PROTO_DIR |
.../gen / .../proto |
pb 代码生成目录/ proto 源 |
CUDA_HOME / CUDA_LIB64 |
/usr/local/cuda(readlink 解析) |
CUDA 安装/库目录 |
UCX_HOME |
/opt/ucx-1.18.0 |
UCX 安装(校验用) |
DEVCC |
$CUDA_HOME/bin/nvcc |
CUDA 设备端编译器 |
GXF_PYTHON / PYTHON_INCLUDE / PYTHON_LIBDIR / PYTHON_LIB |
3.10 等 |
Python 版本与路径 |
BOOST_INCLUDE_DIR / BOOST_LIBRARY_DIR |
系统或 deps/src/boost_1_80_0 |
boost 位置 |
GXF_JOBS |
nproc |
依赖构建并行度 |
PATH |
前置 $GXF_DEPS_PREFIX/bin |
protoc、grpc_cpp_plugin |
LD_LIBRARY_PATH |
前置 $CUDA_LIB64:$UCX_HOME/lib:$GXF_DEPS_PREFIX/lib |
运行时库解析 |
四、模块 → 第三方依赖 对应表
| GXF 模块(产物) |
第三方依赖 |
| core(libgxf_core.so、core_pybind.so) |
yaml-cpp、magic_enum;pybind11 + Python(pybind) |
| std(libgxf_std.so、7 个 pybind) |
yaml-cpp、dlpack、nlohmann-json、CUDA(cudart/headers);pybind11 + Python(pybind) |
| gxe |
gflags、breakpad(+lss)、yaml-cpp |
| logger / sample / network |
无(仅 GXF 内部) |
| serialization / behavior_tree / test |
yaml-cpp(+ CUDA 经 std 闭包) |
| cuda(libgxf_cuda.so、cuda_pybind.so) |
CUDA(cudart);pybind11 + Python(pybind) |
| cuda/tests(libgxf_test_cuda.so) |
CUDA(cudart/cublas/driver stub/nvToolsExt)、yaml-cpp |
| npp(libgxf_npp.so) |
CUDA NPP(nppial/nppidei/nppc/npps/cudart) |
| multimedia |
CUDA(cudart 经 tensor) |
| python_codelet |
pybind11、Python、CUDA(cudart) |
| ipc/grpc(libgxf_grpc.so) |
gRPC 全家(grpc++/grpc/gpr/upb/protobuf/absl/re2/c-ares/zlib/boringssl) |
| ipc/http(libgxf_http.so) |
cpprestsdk、boost、系统 OpenSSL、CUDA(cudart) |
五、常见问题
- 重复执行 :
deps/.stamps/ 下每个依赖一个完成标记,已完成的自动跳过(0.1s 内返回)。
- 强制重建某个依赖 :删除对应标记(如
rm deps/.stamps/grpc)与产物后重新 source ./setup_env.sh。
- 全部重来 :
source ./setup_env.sh clean 后重新 source ./setup_env.sh(gRPC 全量编译约 20--40 分钟,boost 约 10 分钟,其余 <2 分钟)。
- 离线/内网 :所有下载集中在
deps/dist/,可将该目录复制到离线机器后执行(sha256 会校验);gRPC 走 git clone,需要 git 可达 github。
2. # GXF 依赖下载清单(dependences_download)
setup_env.sh 搭建环境时需要下载的全部内容、下载方法与校验值。
总计下载约 1 GB ,解压/构建后占用约 2 GB (deps/)。
- 所有归档统一下载到
deps/dist/,存在则跳过,sha256 校验通过后解包到 deps/src/
- gRPC 是唯一走
git clone 的依赖(其子模块含 protobuf 21.7/abseil/re2/c-ares/zlib/boringssl)
一、HTTP 归档下载(10 项,约 147 MB)
| # |
依赖 |
版本 |
下载 URL |
保存为(deps/dist/) |
大小 |
sha256 |
| 1 |
lss (linux-syscall-support) |
93426bd |
https://chromium.googlesource.com/linux-syscall-support/+archive/93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz |
93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz |
36K |
不固定(动态生成)※本次实测 7188f6da...c15c |
| 2 |
yaml-cpp |
0.6.3 |
https://developer.nvidia.com/isaac/download/third_party/yaml-cpp-0-6-3-tar-gz |
yaml-cpp-0-6-3-tar-gz |
1.4M |
f38a7a7637993943c4c890e352b1fa3f3bf420535634e9a506d9a21c3890d505 |
| 3 |
gflags |
e292e04 |
https://developer.nvidia.com/isaac/download/third_party/gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz |
gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz |
96K |
a4c5171355e67268b4fd2f31c3f7f2d125683d12e0686fc14893a3ca8c803659 |
| 4 |
breakpad |
bae713b |
https://github.com/google/breakpad/archive/bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz |
bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz |
5.3M |
65a0dd6db9065dc539ddf35f969d10b5ad8a7b2c305d2dc5a66a1f8d46f4a904 |
| 5 |
magic_enum |
0.9.3 |
https://github.com/Neargye/magic_enum/archive/refs/tags/v0.9.3.zip |
v0.9.3.zip |
228K |
2ac5f5f0591c8f587b53b89c3ef64c85cc24ebaaa389a659c6bf36a0aa192fe6 |
| 6 |
dlpack |
0.8 |
https://github.com/dmlc/dlpack/archive/refs/tags/v0.8.tar.gz |
v0.8.tar.gz |
76K |
cf965c26a5430ba4cc53d61963f288edddcd77443aa4c85ce722aaf1e2f29513 |
| 7 |
nlohmann-json |
3.10.5 |
https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.zip |
v3.10.5.zip |
7.1M |
ea4b0084709fb934f92ca0a68669daa0fe6f2a2c6400bf353454993a834bb0bb |
| 8 |
pybind11 |
2.11.1 ※ |
https://github.com/pybind/pybind11/archive/refs/tags/v2.11.1.tar.gz |
v2.11.1.tar.gz |
740K |
d475978da0cdc2d43b73f30910786759d593a9d8ee05b1b6846d1eb16c6d2e0c |
| 9 |
boost |
1.80.0 ※※ |
https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz |
boost_1_80_0.tar.gz |
131M |
4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 |
| 10 |
cpprestsdk |
2.10.18 |
https://github.com/microsoft/cpprestsdk/archive/refs/tags/2.10.18.tar.gz |
2.10.18.tar.gz |
1.7M |
6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb |
※ pybind11 版本随 GXF_PYTHON 变化(≤3.12 用 2.11.1;3.13 用 v2.13.6.tar.gz(sha256 e08cb87f...ec20);≥3.14 用 v3.0.1.tar.gz(sha256 741633da...d0ca)),URL 仅版本号不同。
※※ 仅当系统没有 boost ≥1.74 时才下载(否则跳过,用系统 boost)。
逐条下载命令(可直接复制执行)
mkdir -p deps/dist && cd deps/dist
# 1. lss (93426bd) ------ googlesource 动态生成归档,无固定 sha256
curl -fSL --retry 3 -o 93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz \
"https://chromium.googlesource.com/linux-syscall-support/+archive/93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz"
# 2. yaml-cpp 0.6.3
curl -fSL --retry 3 -o yaml-cpp-0-6-3-tar-gz \
"https://developer.nvidia.com/isaac/download/third_party/yaml-cpp-0-6-3-tar-gz"
echo "f38a7a7637993943c4c890e352b1fa3f3bf420535634e9a506d9a21c3890d505 yaml-cpp-0-6-3-tar-gz" | sha256sum -c -
# 3. gflags (e292e04)
curl -fSL --retry 3 -o gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz \
"https://developer.nvidia.com/isaac/download/third_party/gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz"
echo "a4c5171355e67268b4fd2f31c3f7f2d125683d12e0686fc14893a3ca8c803659 gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz" | sha256sum -c -
# 4. breakpad (bae713b)
curl -fSL --retry 3 -o bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz \
"https://github.com/google/breakpad/archive/bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz"
echo "65a0dd6db9065dc539ddf35f969d10b5ad8a7b2c305d2dc5a66a1f8d46f4a904 bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz" | sha256sum -c -
# 5. magic_enum 0.9.3
curl -fSL --retry 3 -o v0.9.3.zip \
"https://github.com/Neargye/magic_enum/archive/refs/tags/v0.9.3.zip"
echo "2ac5f5f0591c8f587b53b89c3ef64c85cc24ebaaa389a659c6bf36a0aa192fe6 v0.9.3.zip" | sha256sum -c -
# 6. dlpack 0.8
curl -fSL --retry 3 -o v0.8.tar.gz \
"https://github.com/dmlc/dlpack/archive/refs/tags/v0.8.tar.gz"
echo "cf965c26a5430ba4cc53d61963f288edddcd77443aa4c85ce722aaf1e2f29513 v0.8.tar.gz" | sha256sum -c -
# 7. nlohmann-json 3.10.5
curl -fSL --retry 3 -o v3.10.5.zip \
"https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.zip"
echo "ea4b0084709fb934f92ca0a68669daa0fe6f2a2c6400bf353454993a834bb0bb v3.10.5.zip" | sha256sum -c -
# 8. pybind11 2.11.1(Python ≤3.12;3.13→v2.13.6,≥3.14→v3.0.1,改版本号即可)
curl -fSL --retry 3 -o v2.11.1.tar.gz \
"https://github.com/pybind/pybind11/archive/refs/tags/v2.11.1.tar.gz"
echo "d475978da0cdc2d43b73f30910786759d593a9d8ee05b1b6846d1eb16c6d2e0c v2.11.1.tar.gz" | sha256sum -c -
# 9. boost 1.80.0(仅当系统无 boost ≥1.74 时需要)
curl -fSL --retry 3 -o boost_1_80_0.tar.gz \
"https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz"
echo "4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 boost_1_80_0.tar.gz" | sha256sum -c -
# 10. cpprestsdk 2.10.18
curl -fSL --retry 3 -o 2.10.18.tar.gz \
"https://github.com/microsoft/cpprestsdk/archive/refs/tags/2.10.18.tar.gz"
echo "6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb 2.10.18.tar.gz" | sha256sum -c -
cd - >/dev/null
一键下载脚本(HTTP 归档 + gRPC 克隆)
#!/usr/bin/env bash
# 预下载 setup_env.sh 所需的全部依赖(等价于其下载阶段,不做构建)
set -e
cd "$(dirname "$0")"
mkdir -p deps/dist deps/src
dl() { # dl <保存名> <URL> [sha256]
local f="deps/dist/$1"
[[ -f "$f" ]] && { echo "[skip] $1"; return 0; }
echo "[dl] $1"
curl -fSL --connect-timeout 20 --retry 3 -o "$f" "$2" || return 1
if [[ -n "${3:-}" ]]; then
echo "$3 $f" | sha256sum -c - || return 1
fi
return 0
}
dl 93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz \
"https://chromium.googlesource.com/linux-syscall-support/+archive/93426bda6535943ff1525d0460aab5cc0870ccaf.tar.gz"
dl yaml-cpp-0-6-3-tar-gz \
"https://developer.nvidia.com/isaac/download/third_party/yaml-cpp-0-6-3-tar-gz" \
f38a7a7637993943c4c890e352b1fa3f3bf420535634e9a506d9a21c3890d505
dl gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz \
"https://developer.nvidia.com/isaac/download/third_party/gflags-e292e0452fcfd5a8ae055b59052fc041cbab4abf-tar-gz" \
a4c5171355e67268b4fd2f31c3f7f2d125683d12e0686fc14893a3ca8c803659
dl bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz \
"https://github.com/google/breakpad/archive/bae713be2e51faa5cbe0ac4bcd21c0a3ee72ff8e.tar.gz" \
65a0dd6db9065dc539ddf35f969d10b5ad8a7b2c305d2dc5a66a1f8d46f4a904
dl v0.9.3.zip \
"https://github.com/Neargye/magic_enum/archive/refs/tags/v0.9.3.zip" \
2ac5f5f0591c8f587b53b89c3ef64c85cc24ebaaa389a659c6bf36a0aa192fe6
dl v0.8.tar.gz \
"https://github.com/dmlc/dlpack/archive/refs/tags/v0.8.tar.gz" \
cf965c26a5430ba4cc53d61963f288edddcd77443aa4c85ce722aaf1e2f29513
dl v3.10.5.zip \
"https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.zip" \
ea4b0084709fb934f92ca0a68669daa0fe6f2a2c6400bf353454993a834bb0bb
dl v2.11.1.tar.gz \
"https://github.com/pybind/pybind11/archive/refs/tags/v2.11.1.tar.gz" \
d475978da0cdc2d43b73f30910786759d593a9d8ee05b1b6846d1eb16c6d2e0c
dl boost_1_80_0.tar.gz \
"https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz" \
4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847
dl 2.10.18.tar.gz \
"https://github.com/microsoft/cpprestsdk/archive/refs/tags/2.10.18.tar.gz" \
6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb
# gRPC v1.48.0(含子模块,约 680 MB)
[[ -d deps/src/grpc-1.48.0 ]] || \
git clone --depth 1 --branch v1.48.0 \
--recurse-submodules --shallow-submodules --jobs 8 \
https://github.com/grpc/grpc deps/src/grpc-1.48.0
echo "全部依赖下载完成。"
二、git 克隆(1 项,约 680 MB)
| 依赖 |
版本 |
命令 |
| gRPC(含 protobuf 21.7 / abseil / re2 / c-ares / zlib / boringssl 子模块) |
v1.48.0 |
git clone --depth 1 --branch v1.48.0 --recurse-submodules --shallow-submodules --jobs 8 https://github.com/grpc/grpc deps/src/grpc-1.48.0 |
三、系统/环境依赖(不走 setup_env.sh 下载)
| 依赖 |
获取方式 |
说明 |
| CUDA 12.6.x |
NVIDIA 官方安装包 |
CUDA_HOME(默认 /usr/local/cuda),需 include/、lib64/、bin/nvcc |
| UCX 1.18 |
源码编译或预装 |
UCX_HOME(默认 /opt/ucx-1.18.0),需 lib/、include/ |
| Python 3.10 + dev |
sudo apt install python3.10-dev libpython3.10-dev |
其他版本用 GXF_PYTHON 指定 |
| OpenSSL 3 dev |
sudo apt install libssl-dev |
cpprestsdk 用 |
| 构建工具 |
sudo apt install build-essential gcc-11 g++-11 binutils-gold cmake git curl patch rsync tar unzip |
g+±11 为必须(与 bazel 工具链一致) |
四、离线/内网使用
- 在联网机器执行一次
source ./setup_env.sh(或仅下载阶段)
- 将整个
deps/dist/(10 个归档)+ deps/src/grpc-1.48.0/(gRPC 克隆)拷贝到目标机器相同位置
- 目标机器执行
source ./setup_env.sh:归档存在即跳过下载,sha256 校验通过后直接解包构建
提示:gRPC 若无法 git clone,也可在联网机器打包 tar -czf grpc-1.48.0-src.tar.gz -C deps/src grpc-1.48.0 转移后解压到 deps/src/。