LINUX.ORG.RU

собрать Qt 5 для ARM

 , ,


0

2

Начну с того, что Yocto/OpenEmbedded(/Buildroot) юзал и собирал Qt 5 в их составе под ARM архитектуру.

Сейчас же стоит задача вкатить на устройство, на котором крутится Linux ARM (вероятно Debian Wheezy), в рабочей ФС не стоит Qt 5 и ничего установить обновить нет возможности - это embedded сборка. Выход - просто скопировать туда свое приложение вместе с нужными кутэшными либами.

Задача:

1) Либо скомпилировать под ARM прямо из исходников (qt-everywhere-opensource-src-5.7.0.tar.gz). Как-то странно, не могу найти описание этого процесса, а в инете только старые статьи либо готовые скрипты, которые мне не подходят

2) Либо (если это возможно), установить Debian ARM (Wheezy) при помощи qemu-arm/chroot. Не уверен насколько это реально, хотя тупо Debian в qemu-arm-system устанавливал ранее

а просто скачать дебиановские пакеты для arm архитектуры, не?

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Нет, туда нельзя установить программы и пакеты, но можно подсунуть SD-карту с программой (это работает), только хочется чтобы она была с Qt.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

ну так достать файлы библиотек из пакетов можно же

да и кросскомпилить не так сложно по идее, запускаешь ./configure --help и смотришь, чего там нужно указать в параметрах

Harald ★★★★★ ()
Ответ на: комментарий от Harald

т.е. можно собрать Qt 5.7 для ARM просто подсунув какие-то параметры?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

в общем и целом да

ну с нюансами разными, типа установить нужный тулчейн, собрать под ARM все нужные зависимости для Qt и т.д.

Harald ★★★★★ ()
Ответ на: комментарий от Harald

кросскомпилить не так сложно по идее, запускаешь ./configure --help и смотришь, чего там нужно указать в параметрах

ну с нюансами разными, типа установить нужный тулчейн, собрать под ARM все нужные зависимости для Qt и т.д.

Для того и тема создана... А может можно готовый Qt 5.7 для ARM взять, но где и как его запускать? Я только в OpenEmbedded пробовал Qt5/ARM - там система+Qt5+программа вместе собирались.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

А может можно готовый Qt 5.7 для ARM взять, но где и как его запускать?

Qt - это фреймворк, набор библиотек, запускать надо программу, которая с Qt линкуется

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Где взять собранный Qt5 с его qmake в комплекте? Просто может есть способ развернуть Debian ARM в chroot + qemu-arm? т.е. не в виртуальной машине, а именно чтобы вывалить готовую ARM-систему с нужными зависимостями и запускать лишь qmake пр помощи qemu-arm?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

в репозиториях дебиана, я ж говорил уже

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Хорошо, скачаю я пакеты с расширением _armhf.deb, распаковал, запускать я их как буду?

Ты это делал сам, если советуешь?

Вот есть дока https://wiki.debian.org/QemuUserEmulation - мне кажется это ближе к реальности.

Поясню: я создал тему, чтобы спросить тех, кто реально это уже делал и знает путь, а не просто предположения...

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от Harald

своё приложение тоже можно кросскомпилировать, указав пути к arm библиотекам

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Я понял что тебя удивляет. Да, я могу распаковать эти библиотеки с Qt 5 из репозитория Debian, да я могу их подсунуть прямо в каталог программы, но... программы то нет еще, есть исходники программы на Qt 5, но ее еще надо собрать под Qt5/ARM!

В общем, похоже я сам во всем почти разобрался: http://h-wrt.com/en/mini-how-to/debian - статья не без ошибок (mount devpts и вторую команду делать не надо, а каталога debian7 не существует), но в целом команды верные.

Вот что мне надо было, так я на своем x86_64 компе смогу собрать программу под Qt5/arm и затем засунуть в устройство.

I-Love-Microsoft ★★★★★ ()

Поищи мануал кросс компиляции для распбери. Я по нему собирал qt5 для cubietruck. Там надо будет поправить хидеры для своей платформы, я за пример брал от какой-то beaglebone. В целом, ничего сложного.

Pentium02 ★★ ()
Ответ на: комментарий от I-Love-Microsoft

но ее еще надо собрать под Qt5/ARM!

ну так собирай, кто мешает :)

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Хорошо, но конкретику бы. т.е. образно говоря я (например в Qt Creator) смогу указать компилер arm-g++ и путь к либам (выкачаным из Debian ARM репозитория)? А qmake я от кого брать буду? Он-то x86-ой должен быть.

В общем, твой вариант без примера не кажется рабочим, либо я что-то не понял. Пока что пробую через Debian ARM chroot по ссылке выше.

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Я в этих ваших эмбедах не шарю, но когда компилял под RPI - помогло это. https://wiki.qt.io/Raspberry_Pi_Beginners_Guide Как бы как раз сборка из исходников для ARM, но может есть ещё тонкостей, да.

alex4321 ()
Ответ на: комментарий от I-Love-Microsoft

т.е. образно говоря я (например в Qt Creator) смогу указать компилер arm-g++ и путь к либам?

да

А qmake я от кого брать буду? Он-то x86-ой должен быть.

хостовый, под x86. В конце концов его использовать необязательно, есть более заточенные под кросскомпиляцию системы сборки (Autotools)

Harald ★★★★★ ()
Ответ на: комментарий от alex4321

И да - ЕМНИП, qmake для текущей архитектуры собирался на одном из шагов, но могу ошибаться.

alex4321 ()
Ответ на: комментарий от Harald

Ааааа, вот оно что, понял... Не знал что так можно, поэтому не воспринимал твои советы, прошу прощения.

Взять хостовый qmake и подсунуть ему Qt5 либы от Debian/ARM и задействовать arm-g++ кросскомпилятор? Но я боюсь оно что-то базовое еще понянет, и это дает мне chroot с Debian/arm.

I-Love-Microsoft ★★★★★ ()

В простейшем виде тебе нужна кросс-компиляция. То есть тулчейн, который будет запускаться на хостовой системе (x86_64) и выдавать из исходников бинарники целевой платформы (arm). Это, что касается компилятора, что касается линковки - для этого нужны библиотеки целевой архитектуры (arm) для тулчейна (ему в общем случае указывается -isystem параметр, указывающий на место где лежат целевые библиотеки). Сюда же включаются и библиотеки Qt.

По практике, нужно иметь готовую сборку qt-everywhere или собрать самому, с указанием, где лежит компилятор и прочие плюшки. Потом в qtcreator достаточно указать qmake, остальное он подтянет сам, т.к. все необходимые параметры ты укажешь при сборке qt-everywhere. Ну или возьмешь готовую собранную версию qt, которая будет знать где и что лежит.

nickleiten ★★★ ()
Ответ на: комментарий от nickleiten

Всё таки chroot с Debian/armhf оказался самым разумным и простым вариантом...

Еще одна проблема в статье: http://h-wrt.com/en/mini-how-to/debian - автор допустим опечатку где указывал архитектуру, надо так: --arch=armhf без пробела.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Кстати, мой /etc/apt/sources.list (редактировал без chroot, ведь изначально редактор недоступен внутри chroot):

deb http://http.debian.net/debian wheezy main
deb-src http://http.debian.net/debian wheezy main

deb http://http.debian.net/debian wheezy-updates main
deb-src http://http.debian.net/debian wheezy-updates main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

deb http://ftp.debian.org/debian/ wheezy-backports main

I-Love-Microsoft ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.