前言
在高通板子上开发一些程序的时候,会用到opencv帮助处理一下图像数据,高通车载板子sa8155和sm8295都有QNX os,需要交叉编译opencv的库,(这个交叉编译真是搞得我太恶心了,所以进行一个记录和分享)
搜了很多资料,有些太过于复杂,有些也存在错误导致最后没有编译成功,这边我使用最少的修改和设置(修改2个文件中的2处路径,共4行代码),进行傻瓜式编译QNX平台的Opencv库,只依赖一个终端。
前期准备
Cmake version:3.14.0
Ubuntu version: 22.04
Opencv version:4.10.0 点击此处跳转下载界面
QNX sdp version:700(8155板子) or 710(8295板子) 这个由于高通的商务策略,需要是高通的客户才可以获取到。
应该还需要安装一些依赖包
sudo apt-get install build-essential cmake unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3-dev
编译过程
Step 1
以编译opencv-4.10.0为例,下载好opencv-4.10.0.zip后我放置在了ubuntu根目录,解压到当前目录,以下是我的路径
wei@wei:~/opencv-4.10.0$ pwd
/home/wei/opencv-4.10.0
Step 2
然后在该文件夹中,创建linux-aarch64-qnx700.cmake和buildQNX700.sh,这里以编译QNX sdp700(8155)的opencv 库为例,8295的编译只是修改一下编译链即可。
Step 3
以下是buildQNX700.sh的内容
source /home/wei/qnx700/qnxsdp-env.sh
cmake .. -DTARGET_CPU:STRING=qnx -DCMAKE_TOOLCHAIN_FILE=/home/wei/opencv-4.10.0/linux-aarch64-qnx700.cmake \
-DCPPBUILD_TARGET_CPU_TYPE:STRING=qnx -DQNXNTO=true \
-DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_CUDA=OFF -DWITH_VTK=OFF -DWITH_MATLAB=OFF -DBUILD_DOCS=OFF \
-DBUILD_opencv_python3=OFF -DBUILD_opencv_python2=OFF -DWITH_IPP=OFF -DBUILD_SHARED_LIBS=ON \
-DBUILD_opencv_apps=OFF -DWITH