Open yuxiaoyuan0406 opened 2 years ago
在编译测试Darknet的过程中遇到了几个问题.
pkg-config
pkg-config根据库名称来读取对应的*.pc文件, 进而生成链接参数选项. 在Darknet源码的Makefile中有这样一段代码.
*.pc
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文件.
apt
libopencv-dev
opencv.pc
同时需要注意, 新版本的OpenCV4生成的文件为opencv4.pc, 所以上面Makefile中的opencv应当改成opencv4.
opencv4.pc
opencv
opencv4
-D OPENCV_GENERATE_PKGCONFIG=ON
在make和make install之后需要对系统的环境变量进行配置. 编辑文件/etc/ld.so.conf.d/opencv.conf(需要管理员权限), 在文件中添加下面的内容.
make
make install
/etc/ld.so.conf.d/opencv.conf
/usr/local/lib
保存之后执行sudo ldconfig.
sudo ldconfig
另外需要配置pkg-config, 编辑/etc/bash.bashrc(需要管理员权限), 在文件尾添加下面的内容.
/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文件.
/usr/local/lib/pkgconfig
source /etc/bash.bashrc
~/.bashrc
之后拷贝pc文件到刚才添加的位置. 首先创建目录sudo mkdir -p /usr/local/lib/pkgconfig. 然后在opencv编译的目录下执行find ./ -name opencv4.pc就能找到文件, 拷贝到刚才新建的目录下即可.
sudo mkdir -p /usr/local/lib/pkgconfig
find ./ -name opencv4.pc
执行测试指令pkg-config --cflags opencv4和pkg-config --libs opencv4查看是否配置号环境变量.
pkg-config --cflags opencv4
pkg-config --libs opencv4
nvcc
nvcc是安装cuda之后同时安装的英伟达编译器, 专门用于编译运行在英伟达GPU上的程序. 按照常理, Jetson Nano是自带cuda的, 所以nvcc也是安装好的, 只是其位置并不在PATH中. 仍然是编辑/etc/bash.bashrc, 在末尾添加下列内容.
PATH
# cuda nvcc export PATH=$PATH:/usr/local/cuda/bin
之后执行source /etc/bash.bashrc, 更新系统的环境变量.
Darknet
在编译测试Darknet的过程中遇到了几个问题.
pkg-config
找不到opencv[2]pkg-config
根据库名称来读取对应的*.pc
文件, 进而生成链接参数选项. 在Darknet源码的Makefile
中有这样一段代码.Ubuntu系统中使用
apt
安装的libopencv-dev
是不提供opencv.pc
文件的, 所以需要自行编译OpenCV. 在编译过程的cmake环节, 参数必须设置生成pc文件.同时需要注意, 新版本的OpenCV4生成的文件为
opencv4.pc
, 所以上面Makefile中的opencv
应当改成opencv4
.在
make
和make install
之后需要对系统的环境变量进行配置. 编辑文件/etc/ld.so.conf.d/opencv.conf
(需要管理员权限), 在文件中添加下面的内容.保存之后执行
sudo ldconfig
.另外需要配置
pkg-config
, 编辑/etc/bash.bashrc
(需要管理员权限), 在文件尾添加下面的内容.这样应该是给系统的所有用户添加了
/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 opencv4
和pkg-config --libs opencv4
查看是否配置号环境变量.nvcc
: command not foundnvcc
是安装cuda之后同时安装的英伟达编译器, 专门用于编译运行在英伟达GPU上的程序. 按照常理, Jetson Nano是自带cuda的, 所以nvcc
也是安装好的, 只是其位置并不在PATH
中. 仍然是编辑/etc/bash.bashrc
, 在末尾添加下列内容.之后执行
source /etc/bash.bashrc
, 更新系统的环境变量.