Tidak dapat menemukan perpustakaan boost-thread-mt

8

Saya menyusun program yang membutuhkan pustaka boost-thread-mt. Saya telah menginstal libboost-all-dev menggunakan sudo apt-get install libboost-all-devtetapi compiler mengatakan bahwa ia tidak dapat menemukan perpustakaan boost-thread-mt. Apakah perpustakaan ini ada dalam paket lain? Tolong bimbing saya apa yang harus saya instal untuk ini.

Muhammad Omer
sumber
Apakah Anda sudah libboost-thread-devmenginstal?
Cornelius
Tidak ada -mtperpustakaan di paket Boost utama. Lihat juga pertanyaan yang belum terselesaikan ini .
saiarcot895
Bagaimana saya bisa menginstal pustaka -mt?
Muhammad Omer

Jawaban:

13

The -mtakhiran telah dihapus. Pustaka Peningkatan yang diinstal multi-threading aman.

Anda dapat mengkompilasi program Anda versus libboost-thread. Baik dengan mengubah sumber untuk menggunakan non -mtlibs atau dengan membuat tautan simbolik libboost_thread.alibboost_thread-mt.a. Hal yang sama jika Anda membutuhkan lib bersama .so.

user.dz
sumber
2
Jadi ... ada saran untuk melakukan pengembangan lintas platform mengingat Ubuntu dengan kebijaksanaannya memutuskan untuk melakukan hal-hal yang berbeda dari orang lain?
Nama samaran
@ Nama samaran, jika Anda menggunakan autotool GNU, lihat Autotconf:AC_CHECK_LIB
user.dz
1
Autoconf berlebihan bagi banyak proyek, terutama jika Anda menggunakan Boost.Build.
Nama samaran
@ Nama samaran, saya tidak begitu terbiasa dengan boost tetapi check-target-builds tampaknya menawarkan fungsionalitas autoconf yang sama untuk boost.build.
user.dz
0

Jika proyek Anda menggunakan CMake, switch berikut ini yang disediakan dalam modul FindBoost harus dimatikan:-DBoost_USE_MULTITHREADED=OFF

Yves Martin
sumber
0

Ini link yang terkait dengan pertanyaan ini.

Anda juga dapat mencoba mengkompilasi boost dari sumber daripada menggunakan versi apt-get.

Argumen --layout, threadingdan build-typeakan membantu.

--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.

Jadi, coba perintah ini untuk menginstal boost, setelah bootstrap.sh --prefix=/path/of/yours:

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

Maka Anda akan mendapatkan semua -mtperpustakaan.

Scott Yang
sumber