LINUX.ORG.RU

Как собрать mytetra не одним бинарником?

 , , , ,


0

2

на сайте указано

git clone https://github.com/xintrea/mytetra_dev.git

git checkout master

qmake .
make

в результате имею 1 жирный бинарник

как собрать чтоб не одним бинарником?

хочу собрать так чтобы работала под всеми дистрибутивами

не где не могу найти инструкций по зборке


как собрать чтоб не одним бинарником?

Добавить опцию --enable-shared ?

хочу собрать так чтобы работала под всеми дистрибутивами

Тогда тебе надо в CentOS 7 собирать. Но вообще это делается не так. Нужно копать в сторону Appimage.

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

Автор у себя на сайте выложил версии 2018 года - она в архиве и работает везде

в таком виде меня устраивает - а вот инструкции как сделать также он почемуто не выложил

понятно что в новых версиях добавляются новые библиотеки или ещё чтото - но можно же было выложить нормальную инструкцию или пояснения в mytetra.pro

а новые версии выходят постоянно просто автор их не выкладывает

там у них есть зборки от энтузиастов - но они работают криво у меня.

GGUseR ()

хочу собрать так чтобы работала под всеми дистрибутивами

Так это, наоборот, статически собирать надо, одним бинарником. Либо делать AppImage/Flatpak/Snap.

в результате имею 1 жирный бинарник

А тебе нужно?

EXL ★★★★★ ()

Никак. Это Qt приложение. Автор сделал все в одном бинарнике без разделяемых библиотек. И ресурсы емнип там через QRC.

Ставишь ubuntu 16.04 собираешь appimage если программа конечно поддерживает qt 5.5. Если нет то есть ppa https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.15.2-xenial

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от bhfq

https://webhamster.ru/site/page/index/articles/projectcode/105

у них тут можно скачать там старая версия и там всё по отдельности

сам бинарник весит 5мб~

тамже ссылка https://webhamster.ru/punbb/viewtopic.php?id=198

где сборки неофициальные (которые криво у меня работают)

и там тоже всё отдельно

както они всё это делают отдельно но в mytetra.pro нет намеков как это сделать

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

кстати да с этими опциями тоже непонятно...

вроде как в .pro фаил надо типо так

CONFIG =+ enable-shared

просто методом тыка

как узнать какие опции вообще доступны и вообще правильно ли я их добавляю т.к вылетает ошибка..

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

просто в сборке от автора и неофициальных сборках бинарник весит 5мб примерно а не 40

Попробуй так:

qmake CONFIG+=release
make
strip -s <бинарь>
EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)

А где же ксинтреа прячется когда он так нужен

Назвался груздем полезай в кузов. Т.е. написал бесплатную программу - оказывай всю жизнь по ней бесплатную поддержку 🤣😂

pingvinek ()
Последнее исправление: pingvinek (всего исправлений: 2)
Ответ на: комментарий от GGUseR

смотри что там по отдельности внимательно.

программа mytetra одним бинарником идет 5мб

все остальное что ты видишь в файле mytetra_1_44_31_lin_64.tar.gz является ее прямыми зависимостями и динамическими в том числе для работы Qt, там даже есть openssl

а файл mytetra.run сделан специально чтобы переменными окружения LD_LIBRARY_PATH запустить mytetra именно с тем Qt который лежит рядом с программой

tl;dr то что «отдельно» это не mytetra.

нет намеков как это сделать

всего скорее у автора есть свой скрипт сборки который он сам написал.

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

както они всё это делают отдельно но в mytetra.pro нет намеков как это сделать

В проекте идет файл README.md и README_ENG.md, там написано, что проект собирается командами:

qmake .
make

Именно так автор и собирает официальные релизы. Просто после сборки бинарника, автор копирует его в виртуалку на чистый Linux без Qt, и добавляет необходимые библиотеки рядом с бинарником. При этом надо учитывать, что часть библиотек перечислены в структуре бинарника в виде зависимых библиотек (можно просмотреть через ldd <имя_бинарника>), а часть библиотек Qt-приложение подключет динамически. Это касается, например, библиотек отрисовки SVG, библиотек печати, библиотек работы с PDF. И без таких библиотек программа даже запустится и будет работать, только функционал, завязанный на данные библиотеки, работать не будет (например, не будет SVG-иконок на кнопках). Это нужно учитывать при формировании релизной сборки.

При сборке под Windows, состав библиотек можно узнать через утилиту windeployqt.exe, но и она показывает не все библиотеки, которые нужны. В общем, сборка релиза что под Linux, что под Windows - дело неоднозначное.

В твоем случае ты скорее всего скачал проект из develop-ветки, в котором включена отладка, и поэтому бинарник у тебя получился большим. Как тут уже сказали, его можно стрипнуть, и он станет маленьким. Никаких опций CONFIG =+ enable-shared не требуется.

Обрати еще внимание, что проект состоит из двух подпроектов. Тебя должен интересовать не mytetra.pro а ./app/app.pro. В нем переменная CONFIG настраивается с помощью переменной BUILD_TYPE, которая задается в самом начале файла. Там в комментариях прописаны допустимые значения.

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

всего скорее у автора есть свой скрипт сборки который он сам написал

Никаких скриптов сборки нет. Во время разработки вся сборка идет штатными средствами. Только чтобы сделать релиз в режиме переносимого приложения, приходится ковыряться.

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

ихнеи сборки запускаются везде - а моя где 40мб только там где собрал

У меня под Linux бинарник в дебажной сборке весит 65Мб для 64-бит систем. Если его стрипануть, он весит 5.8Мб.

А на работе в Windows 10 дебажный бинарник вообще весит 131Мб. И как его стрипануть я не знаю, надо пересобирать в режиме релиза.

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

Спасибо большое! вот сейчас понятно
я на тему QT уже кучу информации перечитал так и не доходит
совсем в другом направлении искал кароче

то что библиотеки самому нужно подкидывать я понял а вот про остальное даже не догадывался.

GGUseR ()
Ответ на: комментарий от Xintrea

Нашел время - всё собралось - всё работает!

как выше писал в сборке от scoute у меня текс наплывает друг на друга - я собрал и всё нормально

вообщем не зря время потратил

ещё нашел у вас на форуме стили для mytetra

не не как не могу понять как задать фон этому https://imgur.com/a/iPBiBbq квадратику на против пункта меню - где стрелка и который голубого цвета?

пробовал через qt-insperctor определить - но почемуто он при указании мышью не показывает как класс называется... вообщем всё разукрашивается кроме этого квадратика

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

Ну вот такой он, QSS.

Видимо, надо влезть в исходники Qt, и посмотреть каким кодом рисуется квадратик для выбранного вами стиля. Там будет видно, откуда берется цвет. От этого и плясать.

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

ещё 1 вопросик

вот хочу для андроида собрать

правлю TARGET_OS на ANDORID_OS в app/app.pro

компиляция проходит а на выходе нет .apk файла - так и должно быть? или для apk какието ещё действия должны быть?

160 версия

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

В самом Qt Creator нужно выбрать и настроить оснастку (комплект) для сборки под Android. В системе обязательно должна быть установлена Java, не могу сказать точно какой версии, она используется во время сборки, и через нее создается java-код, который запустит нативный скомпилированный код под Android.

В любом случае, в «Проекты» - «Сборка и запуск» должен быть добавлен вариант для armv7.

Xintrea ★★★★★ ()
Последнее исправление: Xintrea (всего исправлений: 1)

Вообще, когда

хочу собрать так чтобы работала под всеми дистрибутивами

то самый надёжный способ сделать это — статически собрать со своей версией Qt, то есть как раз

1 жирный бинарник

Причём этот жирный бинарник в итоге оказывается куда менее жирным, чем набор кутешных библиотек, прилагаемых к отдельно взятой программе при динамической компоновке.

Я свой редактор контактов под виндой именно так собираю. Под линукс так тоже можно сделать. Но в случае линукса, и если кутешных программ установлено много, в этом случае экономнее всё же динамическая компоновка и ориентация на системную версию Qt. Но в этом случае либо должен быть двоичный пакет под твой дистрибутив, либо сборка из исходников.

hobbit ★★★★★ ()