如何交叉编译Linux和udev的Arm Video

时间:2018-08-30 07:27:22

标签: c++ arm cross-compiling video4linux

我正在尝试使我们的应用程序在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的东西,但是:

  1. 它需要与libudev链接(交叉编译的库目录中没有libudev,我也不知道从哪里获取它)
  2. 我不认为这是我所需要的:)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

ld找不到v4l软件包,您需要在构建系统中安装该软件包或手动下载该软件包并提供路径。

sudo apt install v4l-utils

在安装软件包后,如果您键入命令which v4l2,它将提供安装路径,您将知道您拥有所需的库。

您也可以从此站点下载软件包。 https://packages.debian.org/sid/v4l-utils


v4l2的源代码,它是Linux内核驱动程序v4l2的一部分