Как сделать кросс-компиляцию для arm видео для Linux и Udev - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь заставить наше приложение работать на устройстве 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 и как мне их кросс-компилировать для моей архитектуры? Обратите внимание, что я нашел что-то с именем v4l-utils от https://www.linuxtv.org/downloads/, но:

  1. требуется соединение с libudev (которого нет в каталоге кросс-скомпилированных библиотек, и я понятия не имею, где его взять)
  2. Не думаю, что это то, что мне нужно:)

Спасибо за помощь

1 Ответ

0 голосов
/ 30 августа 2018

ld не может найти пакет v4l, вам необходимо установить пакет в вашей системе сборки или загрузить пакет вручную и указать путь.

sudo apt install v4l-utils

После установки пакета, если вы введете команду which v4l2, он предоставит путь, по которому он установлен, откуда вы будете знать, что у вас есть необходимая библиотека.

Вы также можете скачать пакет с этого сайта. https://packages.debian.org/sid/v4l-utils


Исходный код для v4l2 его части драйвера ядра Linux v4l2

...