码农-小林 2025-09-29 10:03 采纳率: 54.8%
浏览 2

使用darknet训练图片时候使用mygwin64编译时候报错

使用yolo3训练图片编译make时候报错提示如下

img

已经再makefile文件中更改cuda路径还是报错

img


因为我的cuda目录没有这个LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand,所以这个没改是不是这个原因
我的cuda目录如下

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-09-29 10:04
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你提到在使用 Darknet 进行训练时,在 MinGW64 编译过程中出现了错误,并且已经尝试修改 Makefile 中的 CUDA 路径,但仍然报错。根据你的描述,问题可能出在以下几个方面:


    一、问题分析

    1. CUDA 路径配置不正确

    你提到你的 CUDA 目录中没有 /usr/local/cuda/lib64,这说明你可能安装的是不同路径的 CUDA,比如:

    • /usr/local/cuda/
    • 或者 /opt/cuda/
    • 或者你使用的是 Windows 下的 CUDA(例如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64\

    因此,LDFLAGS 中的路径需要与你实际的 CUDA 安装路径一致。


    2. 编译器环境不匹配

    你使用的是 MinGW64,而 Darknet 通常是在 Linux 环境下编译的。如果你在 Windows 上使用 MinGW64 编译 Darknet,可能会遇到兼容性问题,尤其是涉及到 CUDA 的部分。


    3. CUDA 库文件缺失或版本不匹配

    即使路径正确,如果系统中没有安装对应的 CUDA 库文件(如 libcudart.so, libcuda.so 等),也会导致链接失败。


    二、解决方案

    1. 确认 CUDA 安装路径

    你可以通过以下命令查看当前系统中 CUDA 的安装路径:

    which nvcc
    

    或者:

    nvcc --version
    

    输出示例:

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2023 NVIDIA Corporation
    Built on Fri_Sep_22_19:48:06_PDT_2023
    Cuda compilation tools, release 11.7, V11.7.138
    

    然后查看其路径,例如:

    /usr/local/cuda/bin/nvcc
    

    2. 修改 Makefile 中的 CUDA 路径

    找到你的 Makefile 文件,通常是 darknet/Makefile,并修改如下内容:

    # 原始路径(假设你用的是 /usr/local/cuda)
    LDFLAGS += -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
    
    # 如果你的 CUDA 安装在其他路径,比如 /opt/cuda/
    LDFLAGS += -L/opt/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
    

    注意: 如果你使用的是 Windows + MinGW64,建议不要使用 CUDA,因为 MinGW 不支持 CUDA 编译。请改用 WSL(Windows Subsystem for Linux)或直接在 Linux 系统上编译。


    3. 检查 CUDA 是否安装成功

    运行以下命令确认 CUDA 是否安装成功:

    ldconfig -p | grep cuda
    

    或者查看 CUDA 库是否存在:

    ls /usr/local/cuda/lib64/
    

    你应该看到类似以下文件:

    libcuda.so
    libcuda.so.1
    libcudart.so
    libcudart.so.11.7
    libcurand.so
    libcurand.so.10
    ...
    

    如果没有这些文件,你需要重新安装 CUDA。


    4. 安装 CUDA 工具包(Linux)

    如果你使用的是 Ubuntu 或 Debian 系统,可以使用以下命令安装 CUDA:

    sudo apt update
    sudo apt install nvidia-cuda-toolkit
    

    或者从 NVIDIA 官网 下载并安装。


    5. 使用 WSL(推荐)

    如果你在 Windows 上使用 MinGW64 编译,建议使用 WSL(Windows Subsystem for Linux),它提供了完整的 Linux 环境,可以顺利编译 Darknet 和使用 CUDA。


    三、示例:修改后的 Makefile(Linux 环境)

    GPU=1
    CUDAROOT=/usr/local/cuda
    OPENCV=1
    DEBUG=0
    
    LDFLAGS += -L$(CUDAROOT)/lib64 -lcuda -lcudart -lcublas -lcurand
    

    四、常见错误及解决方法

    | 错误信息 | 解决方法 | |----------|----------| | undefined reference to cudaMalloc | 确保 LDFLAGS 包含 -lcudart | | cannot find -lcuda | 检查 CUDA 安装路径是否正确 | | nvcc not found | 安装 CUDA 工具包 | | MinGW64 does not support CUDA | 使用 WSL 或 Linux 系统 |


    五、总结

    • 重点: 确保 Makefile 中的 LDFLAGS 路径与你实际的 CUDA 安装路径一致。
    • 重点: 如果你在 Windows 上使用 MinGW64,请考虑使用 WSLLinux 系统
    • 重点: 安装并验证 CUDA 是否正常工作。

    如有更多错误日志或截图,欢迎提供,我可以进一步帮你定位问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日