Việc cung cấp các tệp đối tượng có thỏa mãn điều khoản relink LGPL không?


10

Từ câu hỏi này trên SO , tôi đọc rằng:

Mã nguồn độc quyền + Mã nguồn LGPL

  • liên kết tĩnh:
    • Hoặc bạn phải phát hành cả hai phần dưới dạng LGPL.
    • Hoặc cung cấp mọi thứ cho phép người dùng phát lại ứng dụng bằng một phiên bản mã nguồn LGPL khác. Trong trường hợp này, các yêu cầu khác giống như khi nó được liên kết động.

Vì vậy, có vẻ như việc cung cấp các tệp đối tượng là đủ để đáp ứng LGPL về mặt liên kết tĩnh một thư viện LGPL với một ứng dụng mã độc quyền. Mặc dù tệp thực thi được liên kết tĩnh, việc cung cấp các tệp đối tượng cho phép người dùng cuối biên dịch lại ứng dụng, liên kết với các phiên bản khác nhau của thư viện.

Điều này có đúng không, và nếu không thì tại sao?

Câu trả lời:


7

Vâng, bạn hoàn toàn chính xác. Cung cấp các tệp đối tượng cho ứng dụng của bạn là đủ để đáp ứng LGPL vì nó cho phép người dùng thay thế thư viện LGPL'd bằng một số phiên bản khác nếu họ chọn.

FSF thậm chí còn nói rất rõ ràng trong Câu hỏi thường gặp của họ :

Với mục đích tuân thủ LGPL (mọi phiên bản còn tồn tại: v2, v2.1 hoặc v3):

(1) Nếu bạn liên kết tĩnh với thư viện LGPL'd, bạn cũng phải cung cấp cho ứng dụng của mình ở định dạng đối tượng (không nhất thiết phải là nguồn) để người dùng có cơ hội sửa đổi thư viện và phát lại ứng dụng.

(2) Nếu bạn tự động liên kết với thư viện LGPL'd đã có trên máy tính của người dùng, bạn không cần truyền tải nguồn của thư viện. Mặt khác, nếu bạn tự truyền tải thư viện LGPL'd thực thi cùng với ứng dụng của mình, dù được liên kết với tĩnh hay động, bạn cũng phải truyền tải các nguồn của thư viện, theo một trong những cách mà LGPL cung cấp.


1
Vậy tại sao Qt "người trong cuộc" và nhân viên liên tục tuyên bố khác? LGPL của Qt có được sửa đổi hay không?
IvanB

Tôi không quen thuộc với tình huống Qt, nhưng từ việc lướt qua các trang cấp phép của họ, tôi không thấy bất kỳ ngôn ngữ nào phủ nhận rõ ràng khả năng này. Tôi nghĩ rằng họ chỉ bỏ qua nó để đề xuất liên kết động (có lẽ là giải pháp đơn giản hơn cho hầu hết người dùng). Từ ngữ phù hợp nhất mà tôi thấy là: "Trong trường hợp liên kết tĩnh của thư viện, bản thân ứng dụng có thể không còn là công việc sử dụng thư viện và do đó trở thành đối tượng của LGPL. Chúng tôi khuyên bạn nên liên kết động hoặc cung cấp mã nguồn ứng dụng cho người dùng theo LGPL. ", điều này hoàn toàn hợp lý.
Ixrec

Có vẻ như một số mô-đun của Qt chỉ khả dụng theo GPL chứ không phải LGPL, nếu tôi đọc đúng các trang này, vì vậy có thể nếu họ đã đề cập đến tùy chọn liên kết tĩnh với các đối tượng thì họ cũng phải giải quyết "Trừ khi bạn sử dụng X, Y hoặc Z" và các chi tiết tiếp tuyến nhàm chán tương tự.
Ixrec

1
Trong một thế giới hoàn hảo, liên kết động có thể rất tuyệt, nhưng trong thế giới này và khi tiếp xúc với Qt, liên kết động là địa ngục. Giống như hơn 60 megabyte dll, nhiều trong số đó công cụ triển khai không mang lại và walker phụ thuộc không phát hiện ra. Trong Câu hỏi thường gặp về LGPL của họ, tôi thấy The LGPL allows you to keep the source code of your application private as long as it is “work that uses” the library. Dynamic linking is usually recommended here.nhưng không có gì bắt buộc.
IvanB 14/03/2016

4
Đọc Câu hỏi thường gặp của họ, có vẻ như họ chỉ ngại đưa ra một tuyên bố (sai) rằng LGPL không cho phép các ứng dụng độc quyền liên kết tĩnh với Qt, trong khi rất siêng năng trong việc ngụ ý nó.
IvanB 14/03/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.