2010-06-13 31 views
24

Tôi không rõ ràng về những tùy chọn liên kết nào tồn tại cho thư viện Boost.Thread 1.34.1. Tôi đang trên Ubuntu 8.04 và tôi thấy rằng khi sử dụng boost_thread hoặc boost_thread-mt trong khi liên kết cả biên dịch và chạy, nhưng tôi không thấy bất kỳ tài liệu nào về các tùy chọn liên kết này trong liên kết ở trên.Boost.Thread Linking - boost_thread vs. boost_thread-mt

Tùy chọn liên kết Boost.Thread nào khả dụng và chúng có ý nghĩa gì?

+0

Tại sao bạn xây dựng 1.34.1 thay vì 1.43.1? – Puppy

+0

@DeadMG: Vì đó là những gì đi kèm với Ubuntu 8.04 và tôi không có tùy chọn biên dịch và cài đặt phiên bản mới hơn. –

Trả lời

33

Vâng ...

Điều thú vị đầu tiên là -mt sửa đổi trong tên của nó là để chỉ ra thư viện là Ok cho đa luồng. Điều này có thể dẫn chúng ta tin rằng boost_thread (không có sửa đổi lần này) có thể là multithread-không an toàn ...

Nhưng điều thực sự là (như đã thấy trên riêng Ubuntu 10.04 hộp của tôi), boost_thread là một liên kết mềm để boost_thread-mt, có nghĩa là hai là một và giống nhau.

Nếu bạn muốn xác minh điều đó, bạn có thể mở một giao diện điều khiển trên ubuntu của bạn (làm cho giao diện điều khiển toàn màn hình vì những cái tên dài), sau đó gõ:

cd /usr/lib 

để di chuyển đến thư mục chứa các thư viện Boost là. Và sau đó:

ls -l ./libboost_thread* 

Sẽ liệt kê tất cả các tệp bắt đầu bằng libboost_thread, với thông tin bổ sung. Kết quả sẽ là một cái gì đó như:

[...] ./libboost_thread.a 
[...] ./libboost_thread-mt.a -> libboost_thread.a 

Như bạn thấy, libboost_thread.a là một thư viện tĩnh, và libboost_thread-mt.a là một liên kết mềm để libboost_thread.a

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