pjreddie版darknet版make问题和makefile文件修改

前言

  在训练yolov3模型前,首先需要下载darknet的源码,使用的是这一版本:https://pjreddie.com/darknet/yolo/,是在原版(AlexeyAB版本)基础上的改进版本,具体区别见这篇博客:darknet优化经验-AlexeyAB大神经验
  下载完darknet源码后需要使用make指令进行编译,编译的过程实际上是执行Makefile中的语句,要想成功编译,还需根据我们自身服务器环境的情况对MakeFile文件进行修改。以下就是我在make过程中遇到的报错和相应的解决方法。

修改GPU、CUDNN、OPENCV这几项

大多数darknet配置教学都会有这一步,就是根据自己的运行条件(大家一般都是在服务器上运行,所以这三项基本都是设置为1):

GPU=1
CUDNN=1
OPENCV=1
OPENMP=0
DEBUG=0

有的博客说只需要改这几项,但我只改这几项make之后,却出现如下错误:

In file included from ./src/utils.h:5:0,
                 from ./src/gemm.c:2:
include/darknet.h:11:14: fatal error: cuda_runtime.h: 没有那个文件或目录
     #include "cuda_runtime.h"
              ^~~~~~~~~~~~~~~~
compilation terminated.
Makefile:89: recipe for target 'obj/gemm.o' failed
make: *** [obj/gemm.o] Error 1

这是主要是因为服务器找不到相应的cuda,因此需要我们在Makefile中手动添加路径,见下一步。

修改cuda相关路径

需要修改的有:

NVCC=nvcc
ifeq ($(GPU), 1) 
COMMON+= -DGPU -I/usr/local/cuda/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
endif

怎么改呢?其实就是改成自己服务器上cuda所在的实际位置,一般是位于/usr/local/下,但是你可能cuda的目录并不是命名成cuda,而是其他什么别的名字(比如我的就是cuda-10.0)。修改如下(如果还有其他地方包含cuda的路径,那么也进行类似的修改):

NVCC=/usr/local/cuda-10.0/bin/nvcc 
ifeq ($(GPU), 1) 
COMMON+= -DGPU -I/usr/local/cuda-10.0/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/usr/local/cuda-10.0/lib64 -lcuda -lcudart -lcublas -lcurand
endif

改完之后保存,重新进行编译:

make clean		# 清除上次编译内容
make			# 重新编译

编译成功!

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值