Não foi possível encontrar a biblioteca boost-thread-mt

8

Estou compilando um programa que requer a biblioteca boost-thread-mt. Eu instalei o libboost-all-dev usando, sudo apt-get install libboost-all-devmas o compilador diz que não consegue encontrar a biblioteca boost-thread-mt. Esta biblioteca está em algum outro pacote? Por favor, me guie o que eu preciso instalar para isso.

Muhammad Omer
fonte
Você libboost-thread-devinstalou?
Cornelius
Não há -mtbibliotecas no pacote principal do Boost. Veja também esta pergunta não resolvida.
saiarcot895
Como posso instalar as bibliotecas -mt?
Muhammad Omer

Respostas:

13

O -mtsufixo foi removido. As bibliotecas Boost instaladas são seguras para vários segmentos.

Você pode compilar seu programa versus libboost-thread. Alterando a fonte para usar outras -mtbibliotecas ou criando links simbólicos libboost_thread.alibboost_thread-mt.a. A mesma coisa se você precisar de bibliotecas compartilhadas .so.

user.dz
fonte
2
Então ... algum conselho sobre o desenvolvimento de plataforma cruzada, considerando que o Ubuntu, em sua sabedoria, decidiu fazer as coisas de maneira diferente de todos os outros?
Pseudônimo
@Pseudônimo, se você estiver usando as ferramentas automáticas doAC_CHECK_LIB
user.dz
1
O Autoconf é um exagero para muitos projetos, especialmente se você estiver usando o Boost.Build.
Pseudônimo
@ Pseudônimo, eu não estou tão familiarizado com o boost, mas check-target-builds parece oferecer a mesma funcionalidade do autoconf para o boost.build.
user.dz
0

Se o seu projeto for usado CMake, a seguinte opção fornecida no módulo FindBoost deverá ser desativada:-DBoost_USE_MULTITHREADED=OFF

Yves Martin
fonte
0

Este link está relacionado a esta pergunta.

Você também pode tentar compilar o impulso a partir da fonte, em vez de usar a versão apt-get.

Os argumentos --layout, threadinge build-typevai ajudar.

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

Portanto, tente este comando para instalar o boost, depois de bootstrap.sh --prefix=/path/of/yours:

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

Então você receberá todas as -mtbibliotecas.

Scott Yang
fonte