You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器构建项目遇CMake错误:无法找到cudart库

Jetson TX2 Docker环境下CMake无法找到CUDA_CUDART_LIBRARY问题

环境信息

  • 主机:Ubuntu 18.04,NVIDIA Jetson TX2
  • 预装组件:Docker、nvidia-docker2、l4t-cuda
  • 使用Docker镜像:stereolabs/zed:3.7-devel-jetson-jp4.6

核心编译错误

CMake Error at /usr/local/lib/python3.6/dist-packages/cmake/data/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find CUDA (missing: CUDA_CUDART_LIBRARY) (found suitable version
  "10.2", minimum required is "10.2")
Call Stack (most recent call first):
  /usr/local/lib/python3.6/dist-packages/cmake/data/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/lib/python3.6/dist-packages/cmake/data/share/cmake-3.25/Modules/FindCUDA.cmake:1266 (find_package_handle_standard_args)
  CMakeLists.txt:17 (find_package)

CMakeLists.txt完整内容

cmake_minimum_required (VERSION 3.5)

project(vision)
enable_testing()

# Variables scopes follow standard rules
# Variables defined here will carry over to its children, ergo subdirectories

# Setup ZED libs
find_package(ZED 3 REQUIRED)
include_directories(${ZED_INCLUDE_DIRS})
link_directories(${ZED_LIBRARY_DIR})

# Setup CUDA libs for zed and ai modules
find_package(CUDA ${ZED_CUDA_VERSION} REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
link_directories(${CUDA_LIBRARY_DIRS})

# Setup OpenCV libs
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INLCUDE_DIRS})
# Check if OpenMP is installed 
find_package(OpenMP)
checkPackage("OpenMP" "OpenMP not found, please install it to improve performances: 'sudo apt install libomp-dev'")

# TensorRT
set(TENSORRT_ROOT /usr/src/tensorrt/)
find_path(TENSORRT_INCLUDE_DIR NvInfer.h
        HINTS ${TENSORRT_ROOT} PATH_SUFFIXES include/)
message(STATUS "Found TensorRT headers at ${TENSORRT_INCLUDE_DIR}")

set(MODEL_INCLUDE ../code/includes)
set(MODEL_LIB_DIR libs)
set(YAML_INCLUDE ../depends/yaml-cpp/include)
set(YAML_LIB_DIR ../depends/yaml-cpp/libs)

include_directories(${MODEL_INCLUDE} ${YAML_INCLUDE})
link_directories(${MODEL_LIB_DIR} ${YAML_LIB_DIR})

# Setup Darknet libs
#find_library(DARKNET_LIBRARY NAMES dark libdark.so libdarknet.so)
#find_package(dark REQUIRED)

# Setup HTTP libs
find_package(httplib REQUIRED)
find_package(nlohmann_json 3.2.0 REQUIRED)

# System libs
SET(SPECIAL_OS_LIBS "pthread")
link_libraries(stdc++fs)

# Optional definitions
add_definitions(-std=c++17 -g -O3)

# Add sub directories
add_subdirectory(zed_module)
add_subdirectory(ai_module)
add_subdirectory(http_api_module)
add_subdirectory(executable_module)

option(RUN_TESTS "Build the tests" off)

if (RUN_TESTS OR CMAKE_BUILD_TYPE MATCHES Debug)
    add_subdirectory(test)

Dockerfile中失败的构建步骤

WORKDIR /opt

RUN git clone https://github.com/Cruiz102/Vision-Module
WORKDIR /opt/Vision-Module 
RUN mkdir build-debug && cd build-debug
RUN pwd
WORKDIR /opt/Vision-Module/build-debug
RUN cmake -DCMAKE_BUILD_TYPE=Release ..

/etc/docker/daemon.json配置内容

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

已尝试但无效的解决方法

  • 指定工具包路径
  • 编辑daemon.json配置
  • 重新安装依赖组件
  • 更换Docker镜像
  • 在主机重新安装cudart库
  • 修改编译参数
  • 采用交互模式构建容器

可行解决建议

  1. 显式指定CUDA根目录:Jetson平台CUDA默认路径为/usr/local/cuda-10.2,在CMake命令中传入该路径:
    cmake -DCMAKE_BUILD_TYPE=Release -DCUDA_ROOT=/usr/local/cuda-10.2 ..
    
  2. 检查容器内CUDA库存在性:进入容器交互模式,执行以下命令确认libcudart.so是否存在:
    ls /usr/local/cuda/lib64/libcudart.so
    
    若不存在,需确认使用的Docker镜像是否正确包含CUDA runtime环境。
  3. 替换CMake CUDA查找模块:CMake 3.25版本的FindCUDA模块对Jetson兼容性较差,改用FindCUDAToolkit模块,修改CMakeLists.txt中CUDA相关代码:
    # 替换原find_package(CUDA ...)部分
    find_package(CUDAToolkit ${ZED_CUDA_VERSION} REQUIRED)
    include_directories(${CUDAToolkit_INCLUDE_DIRS})
    link_directories(${CUDAToolkit_LIBRARY_DIR})
    
  4. 确认nvidia容器运行时生效:构建镜像时添加--runtime=nvidia参数,或重启Docker服务确保daemon.json配置生效:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

内容的提问来源于stack exchange,提问作者atlas7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:30:48