yuxiaoyuan0406 / JetsonInstruction

An instraction for coding and other shit on Jetson nano
3 stars 0 forks source link

Testing darknet #8

Open yuxiaoyuan0406 opened 2 years ago

yuxiaoyuan0406 commented 2 years ago

Darknet

在编译测试Darknet的过程中遇到了几个问题.

  1. pkg-config找不到opencv[2]

pkg-config根据库名称来读取对应的*.pc文件, 进而生成链接参数选项. 在Darknet源码的Makefile中有这样一段代码.

# Makefile
... # some code
ifeq ($(OPENCV), 1) 
... # some code
LDFLAGS+= `pkg-config --libs opencv` -lstdc++
COMMON+= `pkg-config --cflags opencv` 
endif
... # some code

Ubuntu系统中使用apt安装的libopencv-dev是不提供opencv.pc文件的, 所以需要自行编译OpenCV. 在编译过程的cmake环节, 参数必须设置生成pc文件.

同时需要注意, 新版本的OpenCV4生成的文件为opencv4.pc, 所以上面Makefile中的opencv应当改成opencv4.

-D OPENCV_GENERATE_PKGCONFIG=ON

makemake install之后需要对系统的环境变量进行配置. 编辑文件/etc/ld.so.conf.d/opencv.conf(需要管理员权限), 在文件中添加下面的内容.

/usr/local/lib

保存之后执行sudo ldconfig.

另外需要配置pkg-config, 编辑/etc/bash.bashrc(需要管理员权限), 在文件尾添加下面的内容.

# pkg-config
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

这样应该是给系统的所有用户添加了/usr/local/lib/pkgconfig这个pkg-config的查找位置. 之后执行source /etc/bash.bashrc, 更新系统的环境变量. 如果想只给当前用户修改, 则对应修改~/.bashrc文件.

之后拷贝pc文件到刚才添加的位置. 首先创建目录sudo mkdir -p /usr/local/lib/pkgconfig. 然后在opencv编译的目录下执行find ./ -name opencv4.pc就能找到文件, 拷贝到刚才新建的目录下即可.

执行测试指令pkg-config --cflags opencv4pkg-config --libs opencv4查看是否配置号环境变量.

  1. nvcc: command not found

nvcc是安装cuda之后同时安装的英伟达编译器, 专门用于编译运行在英伟达GPU上的程序. 按照常理, Jetson Nano是自带cuda的, 所以nvcc也是安装好的, 只是其位置并不在PATH中. 仍然是编辑/etc/bash.bashrc, 在末尾添加下列内容.

# cuda nvcc
export PATH=$PATH:/usr/local/cuda/bin

之后执行source /etc/bash.bashrc, 更新系统的环境变量.