Russian Qt Forum
Март 28, 2024, 16:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как настроить QT Creator для компиляции приложений QT5 под ARM Linux в Windows  (Прочитано 11907 раз)
tankist
Гость
« : Июль 21, 2014, 19:37 »

Мне нужно сделать кросс-компиляцию с QT5 в Windows под платформу ARM Linux. Я нашел много описаний, как настроить Qt Creator в Linux, но ничего для Windows. Я прикрутил среду Harmattan от Qt SDK к QT Creator 3, но он собирает программы с библиотекой QT4. На мой взгляд, самый простой способ состоит в использовании Harmattan от Qt SDK, но мне нужно заставить его использовать библиотеку QT5. Как я понимаю, я должен сделать мой собственный sysroot вместо существующего (harmattan_sysroot_10.2011.34-1_slim). Если мои рассуждения верны, то следуют вопросы:
1) Как мне сделать новый sysroot для Harmattan?
2) Нужно ли мне собрать новый "qmake" для QT5?
3) Где мне взять "make" для QT5 или подойдет старый?
4) Может быть, есть другой способ для достижения моей цели?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Июль 21, 2014, 20:52 »

Цитировать
1) Как мне сделать новый sysroot для Harmattan?

ХЗ, читай в доке по SDK от Harmattan, смотри там всякие скрипты.

Цитировать
2) Нужно ли мне собрать новый "qmake" для QT5?

Да. Он появится после кросс-платформенной пересборки Qt5 с использованием твоего SDK от Harmattan.
При этом, екзешка qmake будет скомпилена для хоста (для Винды, и иметь расширение *.exe), т.е. должна запускаться
на хосте (например при помощи QtCreator). Но все Qt5-шные *.so-шки будут скомпилены для таргета (формат ARM ELF),
ты можешь после кросс-компиляции Qt5 проверить это, просто открыв файлики блокнотом. Подмигивающий

Таким образом, *.so - шки будут использоваться кросс-компилятором для линковки твоего приложения с Qt5-шными либами,
а также эти либы можно скопировать на таргет и пользоваться ими там (вместе с твоим приложением).  

Цитировать
3) Где мне взять "make" для QT5 или подойдет старый?

Make - это утилита из SDK (она должна уже там быть, поищи). Хотя, можно воспользоваться любой make.exe (хоть от MinGW, хоть другой).

Цитировать
4) Может быть, есть другой способ для достижения моей цели?

Не факт.

В общем, процесс таков:

1. Пересобрать Qt5 из сорцов, используя кросс-компилятор (ARM) от твоего SDK от Harmattan. В гугле достаточно много инфы где описывается этот процесс (как указать кросс-компилятор, как модифицировать mkspec и пр.). Если у тебя имеется SDK (набор toolchains и прочего) под Windows - то проблем нет.
2. После успешной пересборки Qt5 - запустить QtCreator и создать отдельный Kit (указать путь к кросс-компилятору, отладчику (если нужно), к qmake твоей кросс-компилированной Qt5 и пр.).
3. Создать в QtCreator любой пустой проект (или по-минимуму что-то), выбрать новый Kit и попробовать пересобрать проект.

Если все ок, то далее, для Deploy приложения можно использовать кучу методов..
Для начала - попробовать скопировать скомпиленное приложение на Harmattan (например, в каталог /home/user/myapp), туда-же скопировать все твои кросс-компиленные Qt5-шные *.so-шки и прочее... Запускать приложение через скрипт с LD_LIBRARY_PATH.

Если все пройдет успешно - тогда можно создать уже "инсталлятор" приложения (я не знаю, есть ли в Harmattan какие-нить пакетные менеджеры).

ИМХО, я бы сделал инсталляционный пакет по типу (как делают в винде), т.е. устанавливал приложение в директорию /home/user/app и ложил все что нужно (библиотеки и прочую муть) туда-же. Хотя, тут все зависит от задач.

PS: Ты бы сначала попробовал делать, а потом уже спрашивал.. Подмигивающий
« Последнее редактирование: Июль 21, 2014, 21:04 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
tankist
Гость
« Ответ #2 : Июль 21, 2014, 23:49 »

Цитировать
PS: Ты бы сначала попробовал делать, а потом уже спрашивал..
Я как бы не совсем новичок в кроссплатформенном программировании - мной было написано порядка 10 проектов с QT4 под ARM, но в том случае я использовал готовую qtopia. Опыт сборки библиотек QT5 также имеется, но под linux (то есть библиотеки я уже можно сказать собрал).
По вашему описанию я не понял момент: для кроссплатформенной сборки я использую компиляторы CodeSoursery от Mentor Graphics. Соответственно, собрав с помощью них исходники QT, я получу библиотеки ARM. Каким образом мне собирать qmake?
« Последнее редактирование: Июль 21, 2014, 23:52 от tankist » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Июль 21, 2014, 23:59 »

Цитировать
Каким образом мне собирать qmake?

Оно все само соберется при сборке Qt!

Установи и посмотри для примера виндовую сборку для Android: какие там экзешки, *.so-шки и прочее..
У тебя должно получиться примерно так-же.

Цитировать
Соответственно, собрав с помощью них исходники QT, я получу библиотеки ARM

Да. Но там нужно указывать наверно и путь к rootfs/lib (или как то так).. Хотя не уверен. Нужно пробовать на практике и смотреть на что оно будет ругаться при сборке самого Qt5.

Цитировать
Опыт сборки библиотек QT5 также имеется, но под linux (то есть библиотеки я уже можно сказать собрал).

Как так, Qt собирал, а откуда берется qmake не известно? Подмигивающий

UPD: Ну и если под Windows будет тяжко все это сделать, то ИМХО - проще установить на виртуалку Ubuntu (или что-там), найти и установить ARM тулчейн и не париться. Улыбающийся

« Последнее редактирование: Июль 22, 2014, 00:03 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
tankist
Гость
« Ответ #4 : Июль 22, 2014, 21:43 »

Цитировать
Как так, Qt собирал, а откуда берется qmake не известно?
Увы мне, я не ставил задачу детально разбираться как собирается Qt, так как моя задача - разработка проектов под Qt, а восе не сборка их библиотек. Погуглив, выполнил нехитрый алгоритм: скачал исходники Qt с git -> запустил configure с набором параметров -> запустил make -> устранил кучу ошибок -> запустил make -> понял, что столько ошибок не устранить -> отказался от сборки webkit -> запустил make -> прождал несколько часов -> запустил make install -> забрал из целевой корневой системы библиотеки и всякие сопутствующие файлы -> скопировал на ARM устройство. В каталоге git после сборки нашел один файл qmake (исполнимый файл для x86 Linux), но был ли он там изначально, или собрался - я не знаю. Собрали бы разработчики сразу библиотеки под 100500 платформ - меньше было бы головной боли.

И раз уж я собрал эти библиотеки, я так понимаю, что они подойдут и в мой SDK под Windows? Можно ли тогда отдельно собрать один qmake?

Цитировать
проще установить на виртуалку Ubuntu
Увы, и такое имеется. Только, видимо, что-то мне неймется, я думал, будет достаточно просто сделать свой SDK под Windows. Грустный
Записан
tankist
Гость
« Ответ #5 : Июль 30, 2014, 19:55 »

Начал собирать библиотеки под WIndows, но столкнулся с проблемой: процесс make завершается крахом со следующим сообщением:

Код:
    This is the Qt for Windows Open Source Edition.
     
    You have already accepted the terms of the license.
     
    Creating qmake...
    Makefile:13: *** missing separator.  Stop.
    Makefile:13: *** missing separator.  Stop.
    Cleaning qmake failed, return code 2

Часть Makefile:
Код:
   
1    #AutoGenerated by configure.exe
2    BUILD_PATH = F:\Qt\qt-5.3.1\qtbase
3    SOURCE_PATH = F:\Qt\qt-5.3.1\qtbase
4    INC_PATH = F:\Qt\qt-5.3.1\qtbase\include
5    QT_VERSION = 5.3.1
6    QMAKESPEC = linux-arm-gnueabi-g++
7     
8     
9    !IF "$(QMAKESPEC)" == "win32-msvc" || "$(QMAKESPEC)" == "win32-msvc.net" || "$(QMAKESPEC)" == "win32-msvc2002" || "$(QMAKESPEC)" == "win32-msvc2003" || "$(QMAKESPEC)" == "win32-msvc2005" || "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013" || "$(QMAKESPEC)" == "win32-icc"
10     
11    !if "$(SOURCE_PATH)" == ""
12    SOURCE_PATH = ..
13    !endif
14    !if "$(BUILD_PATH)" == ""
15    BUILD_PATH = ..
16    !endif
В чем проблема?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.