Как сделать двоичное распределение спокойного приложения для Linux

Параметр, переданный в виде строки, не является допустимой литеральной строкой:

ng-init('[aa]')

вместо

ng-init([aa])
16
задан Vadim Kotov 14 July 2017 в 14:37
поделиться

5 ответов

You can also distribute Qt shared libraries on Linux. Then, get your software to load those instead of the system default ones. Shared libraries can be over-ridden using the LD_LIBRARY_PATH environment variable. This is probably the simplest solution for you. You can always change this in a wrapper script for your executable.

Alternatively, just specify the minimum library version that your users need to have installed on the system.

12
ответ дан 30 November 2019 в 16:42
поделиться

Это все равно что сказать, что 0 бананов - это не то же самое, что 0 яблок. В каком-то смысле он прав, но ноль - это ноль, так что в любом случае вы проголодаетесь!

На самом деле мы развиваем эту древовидную структуру еще дальше, помещая все исполняемые и совместно используемые библиотеки в подкаталоги платформы / архитектуры, чтобы сценарий оболочки мог определять локальную архитектуру и вызывать соответствующий исполняемый файл для этой платформы и устанавливать переменные среды на найдите соответствующие разделяемые библиотеки. Мы обнаружили, что эта установка особенно полезна при распространении для нескольких разных версий Linux, которые используют общую файловую систему.

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

При всем этом мы по-прежнему предпочитаем строить статически, когда это возможно, и приложения Qt не являются исключением. Вы определенно можете построить с помощью Qt статически, и вам не придется строить множество дополнительных зависимостей, как отметил krbyrd в своем ответе.

При всем этом мы по-прежнему предпочитаем строить статически, когда это возможно, и приложения Qt не являются исключением. Вы определенно можете построить с помощью Qt статически, и вам не придется строить множество дополнительных зависимостей, как отметил krbyrd в своем ответе.

4
ответ дан 30 November 2019 в 16:42
поделиться

ответ sybreon - это именно то, что я сделал. Вы всегда можете добавить свои библиотеки в LD_LIBRARY_PATH или сделать что-нибудь более интересное:

Установите ваши поставляемые библиотеки Qt по одной для каждого каталога. Напишите сценарий оболочки, пусть он запускает ldd для исполняемого файла и grep для «не найдено», для каждой из этих библиотек добавьте соответствующий каталог в список (назовем его $ LDD). После того, как все они будут у вас, запустите двоичный файл с LD_LIBRARY_PATH , установленным на его предыдущее значение плюс $ LDD.

Наконец, комментарий о «Мне придется перестроить их все с нуля». Нет, тебе не придется. Если у вас есть пакеты разработчика для этих библиотек, у вас должны быть файлы .a , вы можете статически связать их с ними.

3
ответ дан 30 November 2019 в 16:42
поделиться

Эта статья содержит информацию по теме. Сам попробую: http://labs.trolltech.com/blogs/2009/06/02/deploying-a-browser-on-gnulinux/

В двух словах:

  • Настройте Qt с помощью -platform linux-lsb -g ++
  • Связывание должно быть выполнено с –lsb-use-default-linker
  • Упаковать все и развернуть (будет здесь нужно немного поправить, но я еще не пробовал, извините)
-1
ответ дан 30 November 2019 в 16:42
поделиться

Не ответ как таковой (sybreon покрыл это), но обратите внимание, что вам не разрешено распространять свой двоичный файл, если он статически связан с Qt, если только у вас нет купили коммерческую лицензию, иначе весь ваш двоичный файл подпадает под GPL (или вы нарушаете лицензию Qt.)

Если у вас есть коммерческая лицензия, не беда.

Если у вас нет коммерческой лицензии , у вас есть два варианта:

  1. Установить динамическую связь с Qt v4.5.0 или новее (версии LGPL - вы не можете использовать предыдущие версии, кроме приложений с открытым исходным кодом) или

  2. Открыть исходный код.

3
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: