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

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

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

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

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


上午好☀️☀️☀️️
本答案参考通义千问
你提到在使用 Darknet 进行训练时,在 MinGW64 编译过程中出现了错误,并且已经尝试修改 Makefile 中的 CUDA 路径,但仍然报错。根据你的描述,问题可能出在以下几个方面:
你提到你的 CUDA 目录中没有 /usr/local/cuda/lib64,这说明你可能安装的是不同路径的 CUDA,比如:
/usr/local/cuda//opt/cuda/C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64\)因此,LDFLAGS 中的路径需要与你实际的 CUDA 安装路径一致。
你使用的是 MinGW64,而 Darknet 通常是在 Linux 环境下编译的。如果你在 Windows 上使用 MinGW64 编译 Darknet,可能会遇到兼容性问题,尤其是涉及到 CUDA 的部分。
即使路径正确,如果系统中没有安装对应的 CUDA 库文件(如 libcudart.so, libcuda.so 等),也会导致链接失败。
你可以通过以下命令查看当前系统中 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
找到你的 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 系统上编译。
运行以下命令确认 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。
如果你使用的是 Ubuntu 或 Debian 系统,可以使用以下命令安装 CUDA:
sudo apt update
sudo apt install nvidia-cuda-toolkit
或者从 NVIDIA 官网 下载并安装。
如果你在 Windows 上使用 MinGW64 编译,建议使用 WSL(Windows Subsystem for Linux),它提供了完整的 Linux 环境,可以顺利编译 Darknet 和使用 CUDA。
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 安装路径一致。如有更多错误日志或截图,欢迎提供,我可以进一步帮你定位问题!