Impossible de trouver la bibliothèque boost-thread-mt


8

Je compile un programme qui nécessite la bibliothèque boost-thread-mt. J'ai installé libboost-all-dev en utilisant sudo apt-get install libboost-all-devmais le compilateur dit qu'il ne peut pas trouver la bibliothèque boost-thread-mt. Cette bibliothèque est-elle dans un autre package? Veuillez me guider ce que je dois installer pour cela.


Avez-vous libboost-thread-devinstallé?
Cornelius

Il n'y a pas de -mtbibliothèques dans le paquet Boost principal. Voir aussi cette question non résolue.
saiarcot895

Comment installer les bibliothèques -mt?
Muhammad Omer

Réponses:


13

Le -mtsuffixe avait été supprimé. Les bibliothèques Boost installées sont sécurisées pour plusieurs threads.

Vous pouvez compiler votre programme par rapport à libboost-thread. Soit en changeant la source pour utiliser des non -mtlibs soit en faisant des liens symboliques libboost_thread.alibboost_thread-mt.a. Même chose si vous avez besoin de bibliothèques partagées .so.


2
Alors ... des conseils sur le développement multiplateforme étant donné qu'Ubuntu dans sa sagesse a décidé de faire les choses différemment des autres?
Pseudonyme du

@Pseudonym, si vous utilisez les autotools GNU, voir Autotconf:AC_CHECK_LIB
user.dz

1
Autoconf est exagéré pour de nombreux projets, surtout si vous utilisez Boost.Build.
Pseudonyme

@Pseudonym, je ne suis pas si familier avec boost mais check-target-builds semble offrir la même fonctionnalité d'autoconf pour boost.build.
user.dz

0

Si votre projet utilise CMake, ce commutateur suivant fourni dans le module FindBoost doit être désactivé:-DBoost_USE_MULTITHREADED=OFF


0

Ce lien est lié à cette question.

Vous pouvez aussi essayer de compiler le boost depuis la source plutôt que d'utiliser la version apt-get.

Les arguments --layout, threadinget build-typeaideront.

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

Essayez donc cette commande pour installer boost, après bootstrap.sh --prefix=/path/of/yours:

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

Ensuite, vous obtiendrez toutes les -mtbibliothèques.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.