Tôi muốn bao gồm libQtGui.so.4 libQtNetwork.so.4 và libQtCore.so.4 trong cùng thư mục với nơi ứng dụng của tôi nằm. Làm thế nào tôi sẽ làm cho Qt hiểu điều này? mục đích y là có ứng dụng độc lập sử dụng thư viện được chia sẻLàm cách nào tôi có thể đặt nơi ứng dụng Qt tìm thấy mô-đun Qt?
Trả lời
Đặt biến môi trường LD_LIBRARY_PATH là một tùy chọn. Ví dụ:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
Một tùy chọn khác là đặt RPATH của ứng dụng Qt trong khi liên kết. Đặt RPATH thành giá trị "$ ORIGIN" sẽ làm cho trình liên kết động nhìn vào cùng thư mục với ứng dụng Qt của bạn khi chạy. Ví dụ, nếu sử dụng qmake, hãy thêm đoạn sau vào tập tin dự án của bạn:
unix:!mac{
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
QMAKE_RPATH=
}
này sẽ thiết lập rPath thành "$ XỨ: $ ORIGIN/lib: $ ORIGIN/libs", có nghĩa là mối liên kết động sẽ đầu tiên nhìn vào vị trí của ứng dụng Qt của bạn, sau đó trong thư mục con lib tại vị trí của nó, sau đó trong thư mục con libs tại vị trí của nó và cuối cùng là ở bất kỳ vị trí được xác định hệ thống nào.
dường như không hoạt động. –
Đây là đầu ra biên dịch: "g ++: tùy chọn không được công nhận" -wl, - rpath = $ ORIGIN "" "g ++: tùy chọn không được nhận dạng '-wl, - rpath = $ ORIGIN/lib'" "g ++: tuỳ chọn không được công nhận '- wl, - rpath = $ ORIGIN/libs '" –
loại bỏ những thủ công trong Makefile trực tiếp, nhấn xây dựng tất cả một lần nữa sau đó nó được thông qua ... bây giờ để dùng thử. –
UNIX/Linux sẽ xem xét LD_LIBRARY_PATH (nếu được đặt) trước khi tìm trong libs hệ thống chuẩn. Vì vậy, nếu bạn thiết lập điều đó, bạn thực sự có thể ghi đè lên. Cũng giống như thiết lập PATH trên Windows. Hiệu ứng tương tự. Các vấn đề đặt hàng.
Bạn có thể thêm ./ hoặc. cũng như LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
Tôi đã thử nó và nó không hoạt động. Tôi đã đi vào dự án và thay đổi LD_LIBRARY_PATH thành. nhưng không có gì thay đổi khi tôi quay trở lại terminal và gõ ldd ./MyApp ... Tôi đang xây dựng từ GUI ... tôi có nên thử từ dòng lệnh không? –
LD_LIBRARY_PATH
và QMAKE_RPATH
chưa bao giờ làm việc cho tôi. Thay vào đó, tôi đặt QMAKE_RPATHDIR
trong tệp .pro
của mình. Ví dụ sau khi đã xây dựng và cài đặt (make install
) Qt, nó đã được đặt trong /usr/local/Trolltech/Qt-4.8.5/lib/
. Sau đó tôi viết thông tin sau vào tệp .pro
của mình:
QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/
Lưu ý 1: Đường dẫn tương đối dường như không hoạt động. Ưu tiên đường dẫn tuyệt đối.
Lưu ý 2: Khi bạn sau đó make
, bạn có thể thấy rằng các tùy chọn sau đây được trao cho các mối liên kết: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/
Lưu ý 3: Để chắc chắn rằng các liên kết nhị phân tự động vào thư viện đúng, bạn có thể hiển thị phiên bản Qt trong thời gian chạy được phân phối bởi qVersion()
.
- 1. Cách tìm thư mục cài đặt của ứng dụng Qt?
- 2. Cài đặt Qt trên linux, không thể tìm thấy -lGL
- 3. QT OpenGL QGLWidget không thể tìm thấy
- 4. Qt Creator không thể tìm thấy bất kỳ phiên bản Qt hợp lệ nào
- 5. QT Cách nhúng ứng dụng vào tiện ích QT
- 6. Làm thế nào tôi có thể tìm thấy một cá thể metaobt Qt từ một tên lớp?
- 7. Qt :: WA_TranslucentBackground có sẵn ở mọi nơi?
- 8. C++ Qt - QTcpSocket - Không tìm thấy tập tin
- 9. Tôi có thể sử dụng Qt mà không cần qmake hoặc Qt Creator không?
- 10. Giảm thiểu ứng dụng Qt
- 11. Qt tiêu đề ứng dụng
- 12. nơi tôi có thể tìm thấy php.ini cho php-cli
- 13. Nơi tôi có thể tìm thấy @Inject jar
- 14. Tạo cài đặt Linux cho ứng dụng Qt
- 15. Làm cách nào để tạo gói 'cài đặt' cho ứng dụng Qt?
- 16. Cách phát hiện xem ứng dụng GUI Qt có bị nhàn rỗi không, bên trong ứng dụng (Qt)?
- 17. Làm thế nào tôi có thể gửi và nhận tin nhắn SMS từ ứng dụng di động QT cho symbian?
- 18. Ứng dụng Qt hủy sự kiện thoát
- 19. Làm cách nào để triển khai ứng dụng của tôi bằng Qt-Creator?
- 20. Làm cách nào để buộc ứng dụng của tôi chỉ mở một exe? qt, linux
- 21. Hướng dẫn ứng dụng Qt Console?
- 22. Tôi có thể sử dụng Clojure REPL cùng với Qt Jambi bằng cách nào?
- 23. Làm cách nào để thêm Google Maps vào ứng dụng của tôi trong Qt?
- 24. làm thế nào tôi có thể tìm thấy css không sử dụng trong ứng dụng ajax?
- 25. Zotonic- nơi có thể nhanh chóng được tìm thấy
- 26. Giảm kích thước ứng dụng GUI Qt
- 27. Làm cách nào để tôi biết trên Mac OS X nếu tôi cài đặt phiên bản Qt Carbon hoặc Cacao?
- 28. Emacs được nhúng trong Ứng dụng Qt
- 29. Cách cài đặt hai phiên bản Qt và cho ứng dụng sử dụng?
- 30. Ứng dụng đánh chặn Qt :: exec trong lớp ứng dụng?
bạn cũng có thể quyết định liên kết tĩnh với các thư viện Qt, theo cách đó bạn sẽ không phụ thuộc vào phiên bản Qt cục bộ được cài đặt (đây là cách Opera được sử dụng để làm điều đó dưới Linux) – sisis
triển khai trên là fontconfig là lỗi (red Hat 5.3 sử dụng fontconfig 2.4.1) –
khi tôi cố gắng xây dựng tĩnh có một tham chiếu không xác định để FcTypeFreeQueryFace và khi tôi cố gắng để cập nhật fontconfig nó nói với tôi rằng fontconfig được cập nhật ... ..bummer .. sau đó tôi phải tìm một cách để sửa đổi các tập tin Qt để xây dựng với một phiên bản của fontconfig mà tôi cung cấp. Tôi có thể xây dựng ứng dụng của mình theo kiểu động với một phông chữ mà tôi cung cấp nhưng không phải là tĩnh –