Qt один EXE с LGPL?

Я не знаю много о LGPL/GPL, когда речь идет о распространении программ (без лицензии Qt); Если бы я сделал программу, могу ли я статически связывать библиотеки с exe, поэтому у меня есть один файл для распространения, когда:

  • Программа ничего не стоит, она просто распространяется (закрытый источник или с открытым исходным кодом)?

  • Когда вам нужно заплатить за программу, вы можете статически связать ее?

Ответ 1

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

Чтобы использовать код LGPL в проекте с закрытым исходным кодом, пользователь должен иметь возможность заменить часть lgpl кода. Самый простой и наиболее распространенный способ сделать это - поместить весь код LGPL в dll, а затем пользователь может заменить DLL, если они захотят.

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

Не имеет значения, свободен ли ваш продукт или платите. Вы можете продавать продукты GPL/LGPL.

Ответ 2

Фактически, LGPL позволяет устанавливать статические ссылки до тех пор, пока вы удовлетворите несколько очень специфических требований. Например, если весь дистрибутив выполняется с вашего сайта, где у вас StaticProgram.exe, вы в порядке, если пользователи также могут загрузить StaticProgram.obj и LGPL библиотека-source.tar.gz. Вы также можете распространять StaticProgram.exe с письменным предложением предоставить другие файлы.

В частности, статическая компоновка создает один исполняемый файл, который является производным от кода LGPL, поэтому вы должны соблюдать раздел 6 LGPL:

6) В качестве исключения из разделов, приведенных выше, вы также можете объединить или связать "работа, использующая библиотеку", с Библиотека для создания произведения, содержащего части Библиотеки и распространять эту работу в соответствии с условиями ваш выбор, при условии, что условия разрешить изменение работы для использование и обратное для отладки таких модификаций.

Вы должны дать заметное уведомление с каждая копия работы, которую Библиотека используется в нем и что Библиотека и его использование распространяется на эту Лицензию. Вы должны предоставить копию этого Лицензия. Если работа во время исполнения отображает уведомления об авторских правах, вы должны включить уведомление об авторских правах для Библиотека среди них, а также ссылка, направляющая пользователя на копию этой Лицензии. Кроме того, вы должны выполните одно из следующих действий:

a) Сопровождайте работу с полным соответствующим машиночитаемый исходный код для Библиотека, включая любые изменения были использованы в работе (которая должна быть распределенных по разделам 1 и 2 выше); и, если работа является исполняемый файл, связанный с библиотекой, с полным машиночитаемым "работа, использующая библиотеку", так как объектный код и/или исходный код, поэтому что пользователь может изменить библиотеку и затем повторно использовать для создания модифицированного исполняемый файл, содержащий модифицированный Библиотека. (Понятно, что пользователь, который изменяет содержимое файлов определений в Библиотеке не обязательно иметь возможность перекомпилировать приложение для использования измененных определения.)

b) Используйте подходящий общий библиотечный механизм для связывания с Библиотека. Подходящим механизмом является один что (1) использует во время выполнения копию библиотека, уже присутствующая на пользовательской компьютерной системы, а не копирование функций библиотеки в исполняемый файл и (2) будет работать правильно с измененной версией библиотека, если пользователь устанавливает ее, до тех пор, пока модифицированная версия интерфейс совместим с версией что работа была выполнена.

c) Сопровождайте работу письменным предложением, действительным, по крайней мере, для три года, чтобы дать тому же пользователю материалы, указанные в подразделе 6а, выше, для заряда не более стоимость выполнения этого распределения.

d) Если распределение работы осуществляется путем предоставления доступа к копии из назначенного места, предлагать эквивалентный доступ для копирования вышеуказанного указанные материалы от того же место. e) Убедитесь, что пользователь уже получил копию этих материалов или что вы уже отправил этому пользователю копию.

Для исполняемого файла требуемая форма "работы, которая использует библиотеку", должны включать любые данные и полезность программ, необходимых для воспроизведения исполняемый из него. Однако, как особое исключение, материалы, которые должны быть не нужно включать ничего который обычно распределяется (в либо исходной, либо двоичной формы) с основные компоненты (компилятор, ядро, и т.д.) операционной системы на который запускается исполняемый файл, сам компонент сопровождает исполняемый файл.

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