Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top