Chương trình của tôi được xây dựng như một bộ tải và nhiều mô-đun được chia sẻ các thư viện. Bây giờ một trong những thư viện này sử dụng pthreads và có vẻ như nó được gắn với module động (được nạp khi khởi động). Bây giờ nó sẽ đơn giản hơn nếu tôi có thể buộc pthreads được liên kết vào tập tin mô-đun. GCC trên Linux, làm thế nào để tôi làm gì? Tôi đoán libpthread.a là cần thiết ....Buộc GCC liên kết tĩnh ví dụ: pthreads (và không liên kết động)
Trả lời
Trong khi liên kết libpthread.a
vào thư viện được chia sẻ về mặt lý thuyết có thể, đó là ý tưởng thực sự kém . Lý do là libpthread
là một phần của glibc
và tất cả các phần của glibc
phải khớp chính xác hoặc bạn sẽ thấy các sự cố lạ và không giải thích được.
Vì vậy, liên kết libpthread.a
vào thư viện chia sẻ của bạn sẽ:
- Nguyên nhân chương trình của bạn sụp đổ khi chuyển đến một máy tính với một phiên bản khác của
glibc
- Nguyên nhân chương trình hiện tại của bạn sụp đổ khi máy hiện tại của bạn của
glibc
là đã nâng cấp nhưng mô-đun của bạn không được liên kết lại với cập nhậtlibpthread.a
.
Tự khắc phục và không làm điều đó.
: Ôi chúa ơi, ôi trời ơi, Tốt là bạn nói rõ. Nhưng khi một phần của glibc, .../tôi bị biến dạng .. – imacake
Cảm ơn. Giống như câu trả lời. Một truy vấn mặc dù - Nếu libpthread là một phần của libc/glibc, tại sao nó được cung cấp như một thư viện riêng biệt. Hầu như tất cả các libs đều liên kết tới libc và sau đó, nhu cầu của libpthread – Kiran
@Kiran là gì? Tại sao nó được cung cấp như một thư viện riêng biệt - bởi vì nhiều chương trình không cần luồng và liên kết trong 'libpthread' áp đặt chi phí không cần thiết trên chương trình. –
- 1. Liên kết tĩnh tĩnh và liên kết động với glibc
- 2. CMake và Liên kết tĩnh
- 3. Buộc liên kết tĩnh của thư viện được liên kết với mục tiêu Xcode?
- 4. Liên kết tĩnh và động/chia sẻ với MinGW
- 5. Thay thế malloc Windows (ví dụ, tcmalloc) và crt động liên kết
- 6. GCC - ld không liên kết opengl
- 7. Nói trực tiếp gcc để liên kết thư viện tĩnh
- 8. Liên kết libssl và libcrypto trong GCC
- 9. Truy vấn bằng ví dụ về các liên kết
- 10. Liên kết tĩnh với libwinpthread
- 11. liên kết malloc() trong GCC?
- 12. Liên kết Tĩnh với glibc và libstdC++
- 13. Lỗi trình liên kết khi biên dịch ví dụ boost.asio
- 14. Haskell Tĩnh và liên kết động trong triển khai
- 15. Lợi thế liên kết tĩnh
- 16. Phạm vi động - Ràng buộc sâu và Liên kết nông
- 17. liên kết tĩnh của C++
- 18. liên kết bộ nhớ gcc pragma
- 19. Liên kết tĩnh trong C#
- 20. Liên kết tĩnh hoặc động liên kết CRT, MFC, ATL, vv
- 21. Tĩnh ncurses liên kết đến chương trình
- 22. Liên kết glibc tĩnh nhưng một số thư viện khác tự động với GCC
- 23. gcc và g + + nhắc lệnh biên soạn và liên kết
- 24. cách liên kết với lib động (.so) và static libc.a
- 25. Thư viện C không liên kết bằng gcc/g ++
- 26. Tôi có thể liên kết MSVCRT tĩnh với mingw không?
- 27. Liên kết HTML buộc phải làm mới?
- 28. Cách buộc gcc liên kết các đối tượng C++ tĩnh, không được hỗ trợ từ thư viện
- 29. GCC Không liên kết các thư viện chính xác
- 30. Namespace và các thành viên lớp tĩnh liên kết
Trong trường hợp nào bạn phải làm bất cứ điều gì khác ngoài việc bao gồm tiêu đề pthread để làm cho nó xây dựng? Bạn có một ví dụ nguồn? Đây có phải là phương pháp biên dịch tuyệt đối phải không? –