2015-07-08 36 views
5

Tôi đang xem xét việc xây dựng một ứng dụng nguồn đóng liên kết động với các thư viện Qt. Các nền tảng đích sẽ là Linux và Windows. Để thực hiện các nghĩa vụ của LGPL:Cách cho phép sửa đổi riêng tư khi sử dụng Qt trong một sản phẩm thương mại theo LGPL

"Người dùng ứng dụng của bạn phải có khả năng liên kết lại ứng dụng của bạn với một phiên bản khác hoặc sửa đổi của thư viện Qt" (Qt faq).

Tôi đang cố gắng hiểu được kỹ thuật là gì cần thiết để làm điều này có thể. Đặc biệt là không giải phóng mã nguồn.

  1. Trong điều kiện nào người dùng có thể thay thế tệp .so/.dll đi kèm với ứng dụng với các phiên bản đã sửa đổi của riêng mình?

  2. Điều này có thể thực hiện được không? Vì cùng một vấn đề, các trạng thái libstdc++ faq:

    LGPL yêu cầu người dùng có thể thay thế mã LGPL bằng phiên bản đã sửa đổi; điều này là tầm thường nếu thư viện được đề cập là thư viện được chia sẻ C. Nhưng không có cách nào để thực hiện công việc đó với C++, nơi mà nhiều thư viện bao gồm các hàm và mẫu nội tuyến, được mở rộng bên trong mã sử dụng thư viện. Vì vậy, để cho phép mọi người thay thế mã thư viện, một người sử dụng thư viện sẽ phải phân phối nguồn của riêng họ, hiển thị LGPL tương đương với GPL.

Cảm ơn bạn!

Edit: Vấn đề thứ hai được làm rõ bởi LGPL version 3, phần 3. tham khảo hữu ích: một old version của Eigen FAQ thảo luận về vấn đề này và correspondence with the FSF của họ về điều đó.

Trả lời

1

Trong thực tế, mọi người thường liên kết với một thư viện được chia sẻ Qt; để nâng cấp Qt một chút, miễn là một số API phổ biến vẫn còn, là có thể. Người dùng nâng cao về nguyên tắc có thể điều chỉnh thư viện Qt (bắt đầu từ mã nguồn của phiên bản bạn đang sử dụng) để phù hợp với nhu cầu của mình (ví dụ: sửa lỗi nghiêm trọng, cụ thể mà không cần chạm vào bất kỳ tệp tiêu đề Qt nào). Tất nhiên cung cấp cho tất cả các chi tiết để giúp anh ta (ít nhất, đề cập đến chính xác các phiên bản của Qt bạn đang liên kết chống lại).

Về nguyên tắc, như bạn nhận thấy, điều này có thể không đủ. Chỉ có một phiên tòa và một thẩm phán thực sự có thể quyết định, do đó, yêu cầu luật sư của bạn.

Tất nhiên tôi không phải là luật sư.

BTW, bạn có xem xét yêu cầu người quản lý hoặc khách hàng của bạn (hoặc người chịu trách nhiệm pháp lý) phát hành mã của bạn dưới dạng free software và xuất bản nó (ví dụ: theo GPLv3+ trên github)? Theo ý kiến ​​của tôi, đây sẽ là giải pháp tốt nhất!

Các vấn đề liên quan