1

我正在尝试使我们的应用程序在 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链接(交叉编译库的目录中不存在,我不知道从哪里得到它)
  2. 我不认为这是我需要的:)

谢谢您的帮助

4

1 回答 1

0

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

sudo apt install v4l-utils

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

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


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

于 2018-08-30T14:57:07.803 回答