Impossibile trovare la libreria boost-thread-mt


8

Sto compilando un programma che richiede la libreria boost-thread-mt. Ho installato libboost-all-dev usando sudo apt-get install libboost-all-devma il compilatore dice che non riesce a trovare la libreria boost-thread-mt. Questa libreria è in qualche altro pacchetto? Per favore guidami cosa devo installare per questo.


Hai libboost-thread-devinstallato?
Cornelius,

Non ci sono -mtlibrerie nel pacchetto Boost principale. Vedi anche questa domanda irrisolta.
saiarcot895,

Come posso installare le librerie -mt?
Muhammad Omer,

Risposte:


13

Il -mtsuffisso era stato rimosso. Le librerie Boost installate sono multi-threading sicure.

Puoi compilare il tuo programma contro libboost-thread. O cambiando la fonte per usare non -mtlibs o creando collegamenti simbolici libboost_thread.alibboost_thread-mt.a. Stessa cosa se hai bisogno di librerie condivise .so.


2
Quindi ... qualche consiglio su come fare lo sviluppo multipiattaforma dato che Ubuntu nella sua saggezza ha deciso di fare le cose in modo diverso da tutti gli altri?
Pseudonimo del

@Pseudonimo, se si utilizzano autotools GNU, vedere Autotconf:AC_CHECK_LIB
user.dz

1
La configurazione automatica è eccessiva per molti progetti, specialmente se stai usando Boost.Build.
Pseudonimo,

@Pseudonimo, non ho molta familiarità con boost ma check-target-builds sembra offrire la stessa funzionalità di autoconf per boost.build.
user.dz,


0

Questo link è legato a questa domanda.

Puoi anche provare a compilare boost dal sorgente piuttosto che usare la versione apt-get.

Gli argomenti --layout, threadinge build-typesarà di aiuto.

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

Quindi, prova questo comando per installare boost, dopo bootstrap.sh --prefix=/path/of/yours:

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

Quindi otterrai tutte le -mtlibrerie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.