Я использую 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
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.