2013-03-11 37 views
12

Tôi đã làm việc với Qt Creator 2.6.2 dựa trên Qt 5.0.1 trong môi trường linux. Ứng dụng này hoạt động tốt trên máy tính mà tôi đã biên soạn nhưng khi tôi thực hiện nó trên máy tính khác tôi đã nhận lỗi như:Cách xây dựng Qt 5 tĩnh

error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory 
error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory 

tôi tìm thấy một số giải pháp trong link này (một số liên kết là chết).

Vì vậy, tôi thêm vào tập tin .pro tôi dòng này:

CONFIG += static 

Thực hiện việc lập dự án của tôi tĩnh.

Tôi nghĩ tệp tôi sẽ nhận được sẽ lớn hơn nhưng tôi có cùng kích thước và cùng lỗi.

Cảm ơn bạn.

+3

Bạn cần tạo một bản dựng Qt tĩnh để biên dịch một dự án tĩnh. – dtech

+3

Và lưu ý các vấn đề cấp phép. – cubuspl42

+1

Lấy nguồn, và xây dựng với '' './configure -static -release''' –

Trả lời

9

Thư viện được chia sẻ Qt không tồn tại trên máy tính khác mà bạn đã thử nghiệm trên đó. Vì vậy, bạn cần phải:

  1. Sao chép thư viện được chia sẻ sang máy khác của bạn. Hoặc ...
  2. Tạo bản dựng Qt tĩnh để liên kết với ứng dụng của bạn.

Không đủ để chỉ thêm CONFIG += static vào tệp .pro của bạn, bạn cũng cần thư viện tĩnh Qt. Vì vậy, để làm # 2 bạn sẽ cần phải có được mã nguồn Qt và xây dựng nó cho mình.

Ngoài ra, Qt được cấp phép theo LGPL, do đó bạn sẽ cần phải nhận thức được điều đó khi liên kết tĩnh. Có một số người tin rằng LGPL không cho phép liên kết tĩnh (trừ khi bạn LGPL mã của riêng bạn) và những người khác tin rằng nó (miễn là bạn sẵn sàng phát hành mã đối tượng cho ứng dụng của mình). Nhưng đó là một cuộc thảo luận hoàn toàn khác.

+4

Bất kể những gì" một số tin ", theo các điều khoản của các điều khoản của LGPL, mà bạn có thể đọc cho chính mình [ở đây] (http://www.gnu.org/licenses/lgpl.html) bạn có thể liên kết tĩnh miễn là bạn cung cấp phương tiện để người dùng cuối liên kết lại theo ý muốn. Mục 4 (d) (0) là rõ ràng về điểm này. – JBentley

+0

@JBentley Xin lỗi vì trả lời trễ ... Tôi tình cờ đồng ý với bạn hoàn toàn, nhưng những người khác mà tôi đã gặp phải khác nhau, bất kể nội dung của giấy phép nói rõ. – Cutterpillow

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