Không thể tìm thấy thư viện boost-thread-mt


8

Tôi đang biên dịch một chương trình yêu cầu thư viện boost-thread-mt. Tôi đã cài đặt libboost-all-dev bằng cách sử dụng sudo apt-get install libboost-all-devnhưng trình biên dịch nói rằng nó không thể tìm thấy thư viện boost-thread-mt. Là thư viện này trong một số gói khác? Xin hướng dẫn cho tôi những gì tôi cần cài đặt cho việc này.


Bạn đã libboost-thread-devcài đặt chưa?
Cornelius

Không có -mtthư viện trong gói Boost chính. Xem thêm câu hỏi chưa được giải quyết này .
saiarcot895

Làm thế nào tôi có thể cài đặt thư viện -mt?
Muhammad Omer

Câu trả lời:


13

Các -mthậu tố đã được gỡ bỏ. Các thư viện Boost được cài đặt là đa luồng an toàn.

Bạn có thể biên dịch chương trình của bạn so với libboost-thread. Hoặc bằng cách thay đổi nguồn để sử dụng không -mtlib hoặc bằng cách tạo liên kết tượng trưng libboost_thread.alibboost_thread-mt.a. Điều tương tự nếu bạn cần chia sẻ libs .so.


2
Vậy ... có lời khuyên nào về việc phát triển đa nền tảng cho rằng Ubuntu trong sự khôn ngoan của mình đã quyết định làm những điều khác biệt với mọi người khác không?
Bút danh

@Pseudonymous, nếu bạn đang sử dụng autotools GNU, hãy xem Autotconf:AC_CHECK_LIB
user.dz

1
Autoconf quá mức cần thiết cho nhiều dự án, đặc biệt nếu bạn đang sử dụng Boost.Build.
Bút danh

@Pseudonymous, tôi không quá quen thuộc với boost nhưng check-target-builds dường như cung cấp chức năng tương tự của autoconf cho boost.build.
user.dz

0

Nếu dự án của bạn sử dụng CMake, công tắc sau được cung cấp trong mô-đun FindBoost phải tắt:-DBoost_USE_MULTITHREADED=OFF


0

Đây liên kết có liên quan đến câu hỏi này.

Bạn cũng có thể thử biên dịch boost từ nguồn thay vì sử dụng phiên bản apt-get.

Các đối số --layout, threadingbuild-typesẽ giúp.

--layout=<layout>     Determines whether to choose library names
                      and header locations such that multiple
                      versions of Boost or multiple compilers can
                      be used on the same system.

                      versioned - Names of boost binaries
                      include the Boost version number, name and
                      version of the compiler and encoded build
                      properties.  Boost headers are installed in a
                      subdirectory of <HDRDIR> whose name contains
                      the Boost version number.

                      tagged -- Names of boost binaries include the
                      encoded build properties such as variant and
                      threading, but do not including compiler name
                      and version, or Boost version. This option is
                      useful if you build several variants of Boost,
                      using the same compiler.

                      system - Binaries names do not include the
                      Boost version number or the name and version
                      number of the compiler.  Boost headers are
                      installed directly into <HDRDIR>.  This option
                      is intended for system integrators who are
                      building distribution packages.

                  The default value is 'versioned' on Windows, and
                  'system' on Unix.

Vì vậy, hãy thử lệnh này để cài đặt boost, sau bootstrap.sh --prefix=/path/of/yours:

./b2 install -j16 threading=multi --layout=tagged --build-type=complete

Sau đó, bạn sẽ nhận được tất cả các -mtthư viện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.