HoloscanSDK源码构建安装Skill holoscan-install-source

本技能提供从源码构建NVIDIA Holoscan SDK的完整流程指南,覆盖先决条件、克隆仓库、在Docker中使用./run脚本编译、运行测试以及配置CMake依赖。适用于需要自定义构建选项或调试符号的开发者。关键词:Holoscan SDK、源码构建、Docker、CMake、NVIDIA、边缘AI、安装、测试验证。

源码构建与打包 0 次安装 0 次浏览 更新于 9/7/2026
名称 holoscan-install-source
版本 “1.0.0”
描述 “通过仓库内的./run脚本从源码构建Holoscan SDK。仅在已发布的软件包无法满足用户需求时使用。”
开源协议 Apache-2.0 metadata:
作者 “Holoscan Team holoscan-team@nvidia.com” github-url: “https://github.com/nvidia-holoscan/holoscan-sdk” tags: - holoscan - install - source - build - cmake

Holoscan SDK —— 从源码构建

目的

使用nvidia-holoscan/holoscan-sdk源码树中的./run脚本(在Docker容器内构建)从源码构建Holoscan SDK,生成可作为CMake依赖使用的本地安装树。

先决条件

  • 配备NVIDIA GPU和驱动(nvidia-smi)的Linux主机。
  • git、带NVIDIA Container Toolkit的Docker(docker run --gpus all可用),以及docker-buildx-plugin
  • 约20 GB可用磁盘空间用于构建容器和构建/安装目录。
  • 首次干净构建需要10–30分钟。

局限性

  • 仅在已发布软件包(Conda/容器/apt/wheel)无法满足需求时推荐使用——例如需要调试符号、自定义CMake选项或不支持的配置。
  • 仍然需要Docker——./run脚本在容器内构建;这不是真正的裸机构建。
  • 交叉编译到aarch64需要在主机上安装qemu-user-static

第0步:查阅官方安装说明

构建前务必查阅https://docs.nvidia.com/holoscan/sdk-user-guide/sdk_installation.html的“从源码构建”部分(以及所选标签对应的GitHub README.md/DEVELOP.md)。获取目标架构和CUDA主版本所需的./run标志、支持的版本分支/标签、该版本提到的Dockerfile补丁,以及建议用于验证的测试名称。如果文档与下文不一致,以官方文档为准。

第1步:先决条件检查

检查git和Docker(支持GPU透传)是否可用:

git --version
docker --version
docker run --rm --gpus all ubuntu:22.04 nvidia-smi

如果Docker缺失 → 按 https://docs.docker.com/engine/install/ 引导安装。 如果GPU透传失败 → 安装NVIDIA Container Toolkit:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
    | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker

如果Docker buildx缺失:sudo apt-get install docker-buildx-plugin

第2步:克隆仓库

如需克隆仓库到 ~/holoscan/holoscan-sdk:

mkdir -p ~/holoscan/
git clone https://github.com/nvidia-holoscan/holoscan-sdk.git
cd ~/holoscan/holoscan-sdk

要构建特定发布标签(推荐使用稳定版本):

git tag | grep -E '^v[0-9]' | sort -V | tail -5   # list recent tags
git checkout v<VERSION>                             # e.g. v4.1.0

第3步:构建

./run build脚本一步完成容器创建、CMake配置、编译和安装。提醒用户首次运行需要10–30分钟(下载基础镜像并编译)。

./run build

常用选项:

标志 用途
--type debug 调试构建(带符号,无优化)
--type RelWithDebInfo 发布版+调试符号
--arch aarch64 交叉编译到ARM64(需要sudo apt install qemu-user-static
--gpu igpu 用于Jetson/IGX的iGPU构建
--dryrun 预览命令而不执行

如果更改选项后出现CMake缓存错误:

./run clear_cache && ./run build

输出位于以下文件夹,可通过./run get_build_dir./run get_install_dir获取:

  • 构建目录:build-cu<N>-<arch>/
  • 安装目录:install-cu<N>-<arch>/

第4步:运行测试

运行以下测试:

  • EXAMPLE_CPP_HELLO_WORLD_TEST
  • EXAMPLE_PYTHON_HELLO_WORLD_TEST
  • EXAMPLE_CPP_TENSOR_INTEROP_TEST
  • EXAMPLE_PYTHON_TENSOR_INTEROP_TEST
  • EXAMPLE_CPP_VIDEO_REPLAYER_TEST
  • EXAMPLE_PYTHON_VIDEO_REPLAYER_TEST
./run test

要一次运行全部六个必需测试,请使用单引号包裹的正则表达式(|必须被引号包裹以防止bash将其视为管道):

./run test --options "-R 'EXAMPLE_CPP_HELLO_WORLD_TEST|EXAMPLE_PYTHON_HELLO_WORLD_TEST|EXAMPLE_CPP_TENSOR_INTEROP_TEST|EXAMPLE_PYTHON_TENSOR_INTEROP_TEST|EXAMPLE_CPP_VIDEO_REPLAYER_TEST|EXAMPLE_PYTHON_VIDEO_REPLAYER_TEST' --output-on-failure"

按名称或正则表达式运行特定测试:

./run test --name <test_name>
./run test --options "-R '<regex>' --output-on-failure"
./run test --verbose

重要提示: 当正则字符串包含|时,务必用单引号包裹——不加引号时bash会将|解释为管道,导致命令失败并提示command not found

预期结果:所有测试通过。如有任何失败,请记录下来并在继续前告知用户。

第5步:让应用程序指向安装目录

构建完成后,应用程序可以使用该安装目录作为CMake依赖。请向用户提供该路径:

/path/to/holoscan-sdk/install-cu<N>-<arch>/

用户构建自己的应用程序时,可以将 Holoscan_ROOTCMAKE_PREFIX_PATH 设置为该目录。

故障排除

症状 修复
运行测试时出现 bash: <TEST_NAME>: command not found 正则中包含 | — 请用单引号包裹:--options "-R '<regex>'"
更改选项后CMake缓存错误 运行 ./run clear_cache && ./run build
找不到Docker buildx 运行 sudo apt-get install docker-buildx-plugin
构建容器内看不到GPU 检查NVIDIA Container Toolkit并重新运行 sudo nvidia-ctk runtime configure --runtime=docker
交叉编译失败(aarch64) 安装qemu:sudo apt-get install qemu-user-static