c++代码所需要的基础
- cuda
- cudnn
- c++代码所需要的额外库,比如json,curl等
第一步:
cuda和cudnn,jetson Xavier自带cuda和cudnn,查看其版本号
查看cuda版本
nvcc -V
如果此时出现
nvcc : command not found
请在terminal中输入如下命令
export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin
查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
可以看到对应的版本。
比如在本机jetson xavier nx上,cuda版本是10.2,cudnn版本是8.0。
(更新,在windows上使用了libtorch,但是在linux上,使用的是tensorrt,因此不需要安装libtorch,直接跳过libtorch安装步骤即可)
第二步,先测试编译链接,查看错误的地方
cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make
错误1
如果发现json
,curl
未安装,需要安装json
,curl
等库
下面是json
库的安装流程:linux json库的安装流程
下面是curl安装流程:linux curl 安装流程
补丁
当加入了onvif
代码之后,不要sudo
直接安装libcurl4-openssl-dev
,会和libssl1.0-dev
冲突,可以安装curl
,因此还是下载curl安装
curl版本是7.51.0 官网地址https://curl.se/download/
https://curl.se/download/curl-7.51.0.tar.bz2
curl安装流程
同时安装openssl
sudo apt-get install libssl1.0-dev
错误2fatal error : lame/lame.h no such file or directory
安装下面说明安装
lame linux记录录音
错误3:
glog/logging.h: 没有那个文件或目录
eyes@eyes-desktop:~/project/clda_nano_copy/build$ make
[ 6%] Building CXX object CMakeFiles/wl.dir/factory/src/analyser.cpp.o
[ 13%] Building CXX object CMakeFiles/wl.dir/factory/src/fs.cpp.o
In file included from /home/eyes/project/clda_nano_copy/factory/src/fs.cpp:17:0:
/home/eyes/project/clda_nano_copy/factory/include/workloop/logging.hpp:9:10: fatal error: glog/logging.h: 没有那个文件或目录
#include "glog/logging.h"
^~~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/wl.dir/build.make:89: recipe for target 'CMakeFiles/wl.dir/factory/src/fs.cpp.o' failed
make[2]: *** [CMakeFiles/wl.dir/factory/src/fs.cpp.o] Error 1
CMakeFiles/Makefile2:84: recipe for target 'CMakeFiles/wl.dir/all' failed
make[1]: *** [CMakeFiles/wl.dir/all] Error 2
Makefile:90: recipe for target 'all' failed
make: *** [all] Error 2
解决方法
//安装
sudo apt-get install libgoogle-glog-dev
//卸载
sudo apt-get remove libgoogle-glog-dev
错误4cannot find lxxxxx
查找文件
sudo find / -name xxxxx
这说明以下库文件链接有问题,也就是find后面的参数中,l的后面就是库文件的名字,不过需要手动在名字前补齐lib
如:
cannot find -lcudart
cannot find -lnppc
cannot find -lnppi
cannot find -lnppc
cannot find -lnpps
就是
libcudart
libnppc
libnppi
libnppc
libnpps
在usr/lib
目录下没有这些文件
如cannot find -lcudart
find / -name "libcudart*"
cp xx/libcudart.so /usr/lib
直接在系统根目录中依次搜索这些库文件,并使用
sudo cp 库文件名 /usr/lib
命令将相应库文件拷贝到该目录中即可
错误5 cannot find -lavcodec -lavformat -lavutil -lswresample
这几个库是ffmpeg的库,只需要安装dev就可以了
如
sudo apt install libavformat-dev
sudo apt install libavcodec-dev
sudo apt install libswresample-dev
sudo apt install libswscale-dev
sudo apt install libavutil-dev
sudo apt install libsdl1.2-dev
一般装一个,其他的都会自动帮你装上
错误6cannot find -lnvrtc
首先使用find查找位置
find / -name libnvrtc.so
查找到
/usr/local/cuda-10.2/targets/aarch64-linux/lib/libnvrtc.so
这时候需要到/usr/lib
做一个软连接
sudo ln -s /usr/local/cuda-10.2/targets/aarch64-linux/lib/libnvrtc.so /usr/lib/libnvrtc.so
sudo ldconfig
然后make
就可以了
随后继续编译连接直到不报错为止。
随后输入
./clda
查看代码正常运行
注意 opencv
是4.1.1