Точные шаги для кросс-компиляции QT 5.8.0 для ARM 7 с TSLIB
Я очень плохо знаком с кросс-компиляцией и платами ARM. В настоящее время у меня есть основная идея о кросс-компиляции и бинарном исполнении на платах ARM. Я хочу создать приложение QT для запуска на плате на основе ARM, которая поддерживает сенсорный экран. На плате уже настроены QT 5 и tslib. Но для кросс-компиляции приложений с помощью qmake мне нужен кросс-скомпилированный QT с tslib на моем компьютере с Ubuntu. Я смог построить такой без tslib и успешно отобразил приложение на моей доске. Но когда я пытаюсь настроить qt с помощью -tslib, процесс конфигурации приводит к завершению с этими сообщениями:
Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
WARNING: Cross compiling without sysroot. Disabling pkg-config
ERROR: Feature 'tslib' was enabled, but the pre-condition 'libs.tslib' failed.
Check config.log for details.
Вот мой контент на qtbase/mkspecs/linux-arm-gnueabi-g++:
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_INCDIR += /home/tslib/include/
QMAKE_LIBDIR += /home/tslib/lib/
# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_NM = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = arm-none-linux-gnueabi-strip
load(qt_config)
Вот конфиг. команда:
./configure -opensource -confirm-license -xplatform linux-arm-gnueabi-g++ -prefix /usr/local/qt5.8embd -nomake examples -no-opengl -no-iconv -silent -qpa linuxfb -no-gtk -tslib
Правда я рисую в неправильных методах, доступных через Google. Я хотел бы, чтобы кто-то предложил аккуратные рабочие шаги для кросс-компиляции QT 5.8.0 с включенной опцией -tslib.
Примечание: могу ли я создать приложение QT косвенным образом? У меня есть все необходимые.so файлы на моей целевой плате. Я мог бы скопировать их на мой компьютер и могу ли я кросс-компилировать проект Qt только с помощью моей цепочки инструментов?
1 ответ
Какое ваше целевое устройство?
Что обычно делается при кросс-разработке, например:
- Используйте sysroot, предоставляемый кросс-цепочкой (взгляните на Linaro, например)
- Используйте вашу целевую файловую систему как sysroot
В первом случае вам придется выполнить кросс-компиляцию всех необходимых зависимостей и добавить их в sysroot кросс-цепочки инструментов.
Во втором случае вы устанавливаете пакеты разработки зависимостей, которые вам нужны, прямо на цель. Затем, в зависимости от того, как вы настроили свою среду разработки, либо скопируйте эту "новую версию" файловой системы устройства на свою машину разработки, либо сделайте ее доступной, например, через sshfs.