Linux codeblocks darknet调试方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012927281/article/details/83896789

使用GDB对darknet进行调试过于复杂,考虑使用codeblocks以图形化界面对darknet进行调试。现给出编译配置方法。

1)编译*.cu文件

由于codeblocks无法使用多种编译器进行编译(或许可以,但本人不会),因此需要先对*.cu文件进行编译,生成*.o文件。这里编译*.cu的方法是使用darknet代码中给出的makefile中的命令。我使用的方法更为直接,直接执行darknet中的makefile文件生成所有文件,然后将*.cu对应的*.o文件拷贝出来。这一步生成*.o有:

源文件 object文件
blas_kernels.cu blas_kernels.o
col2im_kernels.cu

col2im_kernels.o

im2col_kernels.cu im2col_kernels.o
activation_kernels.cu activation_kernels.o
crop_layer_kernels.cu crop_layer_kernels.o
avgpool_layer_kernels.cu avgpool_layer_kernels.o
convolutional_kernels.cu convolutional_kernels.o
dropout_layer_kernels.cu dropout_layer_kernels.o
maxpool_layer_kernels.cu maxpool_layer_kernels.o
deconvolutional_kernels.cu deconvolutional_kernels.o

 2)创建工程

上述过程生成的object文件留待使用。在codeblocks中创建工程,选择“empty project”即可,将darknet中example、src、include文件夹拷贝到所创建工程中。然后右键工程名,选择“add files recursively”添加文件,选择“select all”添加所有文件。

3)配置头文件路径

右键工程名,选择“Build options...”,配置如下图,主要是配置darknet.h文件所在的位置与cuda.h文件的位置。

3)配置编译选项

还是在build option下,定义GPU、CUDNN,若还想使用openmp与opencv,还可添加OPENCV、OPENMP,此处与makefile的最开头处对应。

4)配置链接库地址

配置动态链接库pthread、stdc++、cuda、cudart、curand、cudnn,其中pthread与cuda库在程序中有涉及,stdc++的作用不清楚。若不清楚动态链接库的位置,可以使用locate命令查询。

5)配置*.o文件

通过上一张图可以看到,配置动态链接库的同时还要配置由*.cu文件生成的*.o文件。第一步中生成的*.cu文件可以直接拷贝到项目根目录下,或者拷贝到某个位置将路径同时写进去。

6)编译程序

上述路径、选项配置好后,点击编译即可生成可执行程序,此时darknet已经可以调试。编译好不建议使用clean,因为可能造成*.o文件的全部删除,由*.cu生成的*.o就需要重新配置了。

7)设置执行参数

选择Project->set program's arguments,设置指定参数

同时还要设置执行路径,否则加载文件时会出错。设置为可执行程序所在的路径,参数的设置也是相对于执行路径。

8)PS:直接执行makefile

在codeblocks可以直接执行makefile,也不会报什么错误,但在执行时会出现加载cuda库错误,用IDE编译链接生成的程序则没有这个问题,因此建议按照上面的教程自己生成可执行程序。

9)再PS:直接执行makefile可行的方法

针对8)中存在的问题,在setting->Environment中选择Environment variables,添加LD_LIBRARY_PATH环境变量,添加cuda lib相应路径即可。这可能是codeblocks的问题,启动的时候不能加载环境变量,pycharm也存在类似的问题。

猜你喜欢

转载自blog.csdn.net/u012927281/article/details/83896789
今日推荐