Не может найти liboost-mt

Я использую Kinect, чтобы получить 3D модели эрозии почвы и просканировать растительность, и я пытаюсь скомпилировать это приложение для Kinect: http://www.ccs.neu.edu/research/gpc/imucam/index.html, однако когда я работаю, делает, я получаю следующую ошибку:

    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

Я считал make-файл и нашел:

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

Так, мой вопрос состоит в том, как я могу назвать свои libbost.so библиотеки в make-файле. У меня есть libboost 1.55. Я пытался изменить mt для .so, но я получаю ту же ошибку:

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

Любая справка для решения этого была бы большим Спасибо, заранее José Soto

1
задан 8 March 2016 в 02:42

1 ответ

libboost библиотеки изменили свои имена, удалив "-mt", можно, вероятно, отредактировать make-файл, чтобы удалить-mt s на имена или попробовать предложение от http://forum.freecadweb.org/viewtopic.php?t=4541 для восстановления make-файла.

<час>

Kinect требует 64 битов, и Ваши библиотеки начальной загрузки находятся в каталоге на 32 бита. Вы находитесь на машине на 64 бита и если Вы, можно ли установить пакеты повышения на 64 бита?

<час>

В терминале, выполненном

 uname -a 

, чтобы видеть, составляет ли Ваша ОС 32 бита или 64 бита (X86_64 указывает на 64 бита). Вы, возможно, установили версию на 32 бита ОС.

<час>

Проверка отдельные пакеты для того, чтобы быть версией на 64 бита с:

dpkg -l |fgrep boost  

, например, ": amd64" на имени пакета.

ii libboost-filesystem-dev:amd64 1.54.0.1ubuntu1...
, Если Вы добираетесь ": i386" вместо "amd64", это - версия на 32 бита. Не уверенный, как это, возможно, произошло, если Вы не установили их явно (включая ": i386" на пакете называют в установке. Можно просто установить необходимые пакеты повышения на 64 бита с:

sudo apt-get install  libboost-filesystem-dev  

или просто вызывают пакет на 64 бита при помощи libboost-filesystem-dev:amd64. Вы не должны даже волноваться об удалении i386 версий, они - различные каталоги, но если Вы действительно удаляете их, используйте ": i386" на пакете называют для выбора их по версии на 64 бита.

В моих 14,04 системах, я загрузил последний пакет Kinect (содержащий imucam-R186M_2014-05-29), добавила библиотека повышения, которую я пропускал, отредактировал make-файл для удаления "-mt" s и всего успешно скомпилированного с одним предупреждением openni.

2
ответ дан 7 December 2019 в 13:48

Другие вопросы по тегам:

Похожие вопросы: