Проблема при развертывании приложения Qt на Raspberry Pi 4 (не удалось поставить в очередь перелистывание страницы DRM на экране HDMI1 (недопустимый аргумент))

#qt #raspberry-pi #cross-compiling

#qt #raspberry-pi #перекрестная компиляция

Вопрос:

Я скомпилировал Qt5.15.0 и настроил кросс-компилятор на своем хост-компьютере (Ubuntu 20.04), и мне удалось скомпилировать простое приложение Hello World для моего Raspberry Pi 4, однако, когда я его развертываю и запускаю (пробовал как в Qt Creator, так и в терминале) Я получаю Could not queue DRM page flip on screen HDMI1 (Invalid argument) , что использую последнее изображение Raspbian и пробовал как с облегченными, так и с полными версиями для настольных компьютеров.

Есть несколько решений, предлагающих установить переменные среды;

 QT_QPA_EGLFS_ALWAYS_SET_MODE=1
QT_QPA_EGLFS_KMS_ATOMIC=1
  

Но мне не повезло с их установкой.

Я не знаю, в чем проблема, я очень новичок в Qt.

Ответ №1:

Для тех, у кого такая же проблема, вот как я решил;

Каким-то образом я обнаружил, что Raspberry Pi не устанавливает переменную среды QT_QPA_EGLFS_ALWAYS_SET_MODE . Вы можете проверить это, набрав

 printenv QT_QPA_EGLFS_ALWAYS_SET_MODE
  

или

 echo $QT_QPA_EGLFS_ALWAYS_SET_MODE
  

в обоих случаях вы должны увидеть 1 результат, если вы его так настроили.

Однако я не получил ответа, когда набрал их.

Затем я пошел и открыл .profile и добавил

 QT_QPA_EGLFS_ALWAYS_SET_MODE=1
  

в конце файла и перезагрузил систему. Наконец, когда я повторил переменную, она вернула 1, и мои программы теперь работают довольно хорошо.

Комментарии:

1. Спасибо! Кстати, мне пришлось ввести export QT_QPA_EGLFS_ALWAYS_SET_MODE=1

Ответ №2:

Переменные должны быть установлены в:

 /etc/default/qt
  

См. QTBUG-72539 в отслеживании ошибок Qt.