Não é possível encontrar liboost-mt

1

Estou usando o kinect para obter modelos 3D de erosão do solo e para varrer vegetação e estou tentando compilar este aplicativo para o kinect: link , no entanto, quando eu executo, obtenho o seguinte erro:

    linking record_frames from record_frames.o fps.o frame.o grabber.o interactor.o os.o pick_player.o player.o reader.o recorder.o source.o um6.o viewer.o writer.o
/usr/bin/ld: cannot find -lboost_serialization-mt
/usr/bin/ld: cannot find -lboost_system-mt
/usr/bin/ld: cannot find -lboost_filesystem-mt
/usr/bin/ld: cannot find -lboost_thread-mt
/usr/bin/ld: cannot find -lboost_date_time-mt
/usr/bin/ld: cannot find -lboost_iostreams-mt
/usr/bin/ld: cannot find -lboost_regex-mt
/usr/bin/ld: cannot find -lboost_mpi-mt
collect2: error: ld returned 1 exit status
make: *** [record_frames.bin] Error 1

Eu li o makefile e encontrei:

DEF_BOOST_LIBS := -lboost_serialization-mt -lboost_system-mt \
          -lboost_filesystem-mt -lboost_thread-mt \
          -lboost_date_time-mt -lboost_iostreams-mt \
          -lboost_regex-mt -lboost_mpi-mt

Então, minha pergunta é como posso chamar minhas bibliotecas libbost.so no makefile. Eu tenho libboost 1.55. Eu tentei mudar mt para .so, mas eu recebo o mesmo erro:

/usr/bin/ld: cannot find -libboost_serialization.so

Qualquer ajuda para resolver este wolud é ótima. Obrigado, antecipadamente José Soto

    
por José Trinidad Soto 08.03.2016 / 00:27

1 resposta

2

As bibliotecas libboost mudaram seus nomes, removendo o "-mt" Você provavelmente pode editar o makefile para remover os -mt s nos nomes, ou tente uma sugestão de link reconstruir o makefile.

O kinect requer 64 bits e suas bibliotecas de inicialização estão no diretório de 32 bits. Você está em uma máquina de 64 bits e, se estiver, pode instalar os pacotes de reforço de 64 bits?

Em um terminal, execute

 uname -a 

para ver se o seu SO é de 32 ou 64 bits (X86_64 indica 64 bits). Você pode ter instalado uma versão de 32 bits do sistema operacional.

Verifique se os pacotes individuais são da versão de 64 bits com:

dpkg -l |fgrep boost  

por exemplo. o ": amd64" no nome do pacote.

ii libboost-filesystem-dev: amd64 1.54.0.1ubuntu1 ...
Se você receber um ": i386" em vez do "amd64", é uma versão de 32 bits. Não tenho certeza de como isso poderia ter acontecido a menos que você os tenha instalado explicitamente (incluindo o ": i386" no nome do pacote na instalação. Você pode simplesmente instalar os pacotes necessários de reforço de 64 bits com:

sudo apt-get install  libboost-filesystem-dev  

ou simplesmente force o pacote de 64 bits usando libboost-filesystem-dev: amd64. Você não precisa nem se preocupar com a desinstalação das versões do i386, elas são diretórios diferentes, mas se você removê-las, use o ": i386" no nome do pacote para selecioná-las na versão de 64 bits.

No meu sistema 14.04, eu baixei o pacote kinect mais recente (contendo imucam-R186M_2014-05-29), adicionei uma biblioteca de reforço que estava faltando, editei o makefile para remover os "-mt" e tudo compilado com sucesso um aviso de openni.

    
por ubfan1 08.03.2016 / 00:40