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 ★★★★★
()
Ответ на: комментарий от anonymous

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

Куда ты её добавлять собрался? Там не autotools, а qmake.

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

Никак. Это 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

Ого круто. Спасибо за линк. Хоть теперь самому собирать Qt5 не надо. Кто еще кроме убунты и центоси похвастается такими бэкпортами.

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

Я заметил, что 16.04 уважают даже больше, чем 18.04. Вот и гонитесь после этого за обновлениями.

18.04 по сути ничего не принесла и C++17 там по прежнему нет.

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

емнип уже в апреле поддержка 16.04 будет прекращена и останется 18.04

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CONFIG =+ enable-shared

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

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

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

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

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

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

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

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

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

Мышь за мышь и зуб за зуб? У вас у обоих крысы на аватарках 🐀 это даёт вам привелегии кастовать друг друга?

pingvinek ★
()
Ответ на: комментарий от 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 ★
() автор топика
Ответ на: комментарий от GGUseR

Да - по твоему зря ходил?

Ну раз ходил, нормально все.

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

как его стрипануть я не знаю

В Msys2 есть виндовый strip.

anonymous
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.