LINUX.ORG.RU

Кросс компиляция программы на qt5 с предкомпиленными библиотеками.

 , , ,


0

1

Здравствуйте. Возник следующий вопрос. Имеется хост x86_64 и таргет aarch64. На таргите установлена убунта кастомизированная. Имеется программа на qt5 с pro файлом. Требуется на хосте кросс компильнуть программу на таргет. Qt5 библиотеки уже есть установленные на таргите, и хочется использовать их, а не собирать qt-everywhere. Это муторно, так как программа очень обширная и требует множество дополнительных плагинов.

А есть возможность развернуть компилятор + dev-версию Qt с хедерами на таргете?

Возможно это будет куда проще, чем ковыряться с кросс-компиляцией. В том случае, если Qt из реп Ubuntu конечно, а не самосборный.

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

Пытался как временное решение, не прокатило. Выпадала ошибка внутренняя ошибка компилятора. Да и программа там не хилая, собиратьтся будет очень долго и в конечном варианте, железка должна быть на самосборном линуксе, а не на убунте. Кросс компиляция - это не сложно. Просто раньше всегда собирал библиотеки из сырцов и qmake к ним привязывался. А теперь для экономии времени и не трогония чужих рабочих библиотек, хочется понять как qmake хостный натравить на таргетовские библиотеки. По сути qmake moc rcc uic не должны зависить от архитектуры. Они просто должны модифициовать код, чтобы кросс компилятор gcc его принял.

kirilliakimovich
() автор топика
Ответ на: комментарий от kirilliakimovich

Кросс компиляция - это не сложно.

Если мы говорим про cmake, meson или, по праздникам, прости господи, автоконф. Кросскомпилировать используя qmake или cmake’ную обвязку для Qt5 - задача подъемная, но это боль, унижения и страдания.

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

А есть возможность развернуть компилятор + dev-версию Qt с хедерами на таргете?

Так не делают… точнее, так конечно можно сделать, но обычно настраивают кросс-компиляцию, чего и хочет ТС. Ставят тулчейн, скидывают собранные под целевую архитектуру библиотеки в нужное место и прописывают cmake/qmake/make и переменные окружения с путями до компилятора и библиотек.

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

Отлаживать тоже, но оно работает нормально и на x86_64 и на armhf (под него мне собирал buildroot). Просто сейчас появился планшет на андроиде, куда я с божьей помощью установил ubuntu нативно. И не хочется мудохаться и собирать весь стек qt5 вручную, ибо уже в репах дистрибутива есть готовые библиотеки. Надо взять этот sysroot и как-то на это все натравить qmake который на хосте. Я вроде смотрел, там есть в нем conf файлы под разные платформы. Только я недопедрил как хост qmake указать что компилятор будет другим, использовать вот этот sysroot и либы qt у тебя будут другие не под твою ахритектуру. qmake же просто генерит makefile, и ему должно быть пофиг что там за архитектура и какие либы и где они. Это уже вопрос компилятора и линковщика. А там еще есть moc, тут я уже не знаю, что ему надо. Так-то собрав библиотеки из сырцов, все будет робить, но это долгий и муторный процесс, хочется немного его ускорить и не пересобирать, что уже готово.

kirilliakimovich
() автор топика
Ответ на: комментарий от Stil

Кросскомпилировать через qmake нормально. Но я проходил этот путь и использую ежедневно только с библиотеками, которые сам на хосте собрал. А вот этот же путь, но уже с готовыми либами, я хз как делается.

kirilliakimovich
() автор топика
Ответ на: комментарий от aiqu6Ait

Если честно, я искал такие гайды, но не нашел. Везде предлагают собрать его самим из qt-everywhere. Но я замудохаюсь все сторонние плагины собирать. И у меня еще есть вопросики, а правильно ли я укажу все поддерживаемые приблуды для видеоотрисовки. Там вулканы, opengl, напрямую рисовать без всяких x11 или наоборот через это. Вот есть либы из репы и они работают отлично с прогами из репы, которые требуют qt5. А собирать - программист-ленивый, хочет использовать готовое. Ну и вообще я считаю этот путь более правильным, чем городить огород нескольких версий библиотек и каждой прожке указывать, вот тут твои либы, а тебе вот тут искать. Были придуманы места, где оно должно храниться по умолчанию, вот пусть туда по трушному и стучатся

kirilliakimovich
() автор топика
Ответ на: комментарий от EXL

Я ж и пишу, что на таргете не надо ничего разворачивать. Надо на x86_64 хосте развернуть тулчейн для таргета и настроить среду сборки. А еще надо будет прокинуть отладчик…

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

Так я забросил эту идею. У меня при компиляции вылезала внутреняя ошибка компилятора. Я читал что это возможно из-за ограничения стека системы, но ничего не помогло. Я вот и хочу развернуть на x86_64. Вроде нашел статью, как настроить mkspec. Надеюсь поможет. Вот только я не совсем понял, когда требуется собирать новые qmake moc rcc uic, насколько версии могут различаться. Попробую этот способ, отпишусь.

kirilliakimovich
() автор топика