我正在尝试使我们的应用程序在Arm设备上运行,规格:
Architecture: aarch64
Byte Order: Little Endian
Model name: ARMv8 Processor rev 3 (v8l)
为此,我已经安装了必要的交叉编译器
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
并且由于我们使用Qt,因此我还针对该特定体系结构交叉编译了Qt:
./configure -xplatform linux-aarch64-gnu-g++ -opensource \
-confirm-license -nomake tests -nomake examples -static \
-skip qtwebengine -release -prefix /opt/qt5-arm -no-xcb \
-no-opengl -no-use-gold-linker
我们的应用程序与Linux的视频链接在一起,因此我们具有以下编译行:
aarch64-linux-gnu-g++ -o bin/executable <removed unimportant stuff>...
-lv4l2 -lv4lconvert -L/opt/qt5-arm/plugins/imageformats -lqgif
-L/opt/qt5-arm/lib -lqicns -lqico -lqjpeg -lQt5DBus
-lQt5Gui -lqtlibpng -lqtharfbuzz -lQt5Network -lQt5Core
-lm -lqtpcre2 -ldl -lpthread
而且由于我显然没有交叉编译Linux视频,所以我得到了以下错误消息:
/usr/bin/aarch64-linux-gnu-ld: cannot find -lv4l2
/usr/bin/aarch64-linux-gnu-ld: cannot find -lv4lconvert
collect2: error: ld returned 1 exit status
问题来了:
如何从哪里获得video4linux的资源,以及如何交叉编译它们用于我的体系结构?请注意,我从https://www.linuxtv.org/downloads/找到了一个名为v4l-utils的东西,但是:
感谢您的帮助
答案 0 :(得分:0)
ld
找不到v4l软件包,您需要在构建系统中安装该软件包或手动下载该软件包并提供路径。
sudo apt install v4l-utils
在安装软件包后,如果您键入命令which v4l2
,它将提供安装路径,您将知道您拥有所需的库。
您也可以从此站点下载软件包。 https://packages.debian.org/sid/v4l-utils
v4l2的源代码,它是Linux内核驱动程序v4l2的一部分