2013-05-08 4 views
3

Я пытаюсь скомпилировать точки помутнения библиотеки из источника на OSX 10.6.8, и я продолжаю сталкиваясь с той же ошибкой с библиотеками буста:проблем Повышения при компиляции точки помутнения библиотеки

! make 
Linking CXX shared library ../lib/libpcl_common.dylib 
Undefined symbols: 
    "boost::thread::start_thread_noexcept()", referenced from: 
    boost::thread::thread<boost::_bi::bind_t<void, boost::_mfi::mf0<void, 

pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > > >(boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > >, boost::disable_if_c<boost::thread_detail::is_convertible<boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > >&, boost::detail::thread_move_t<boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > > > >::value, boost::thread::dummy*>::type)in time_trigger.cpp.o 
    "boost::thread::join_noexcept()", referenced from: 
     pcl::TimeTrigger::~TimeTrigger()in time_trigger.cpp.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make[2]: *** [lib/libpcl_common.1.7.0.dylib] Error 1 
make[1]: *** [common/CMakeFiles/pcl_common.dir/all] Error 2 
make: *** [all] Error 2 

У меня есть просмотрел параметры CMake и , ни один из них, похоже, не ссылается на библиотеку Boost с активированными расширенными настройками, я обнаружил, что мои файлы библиотеки ускорений находятся в /usr/lib/; например /usr/lib/libboost_date_time-mt.dylib:

enter image description here

Что я могу сделать, чтобы решить эту проблему? И что я могу сделать в будущем, чтобы предотвратить повторение подобных проблем?


UPDATE Я перестроен и скомпилирован подталкивание с нуля, и я все еще получаю ту же ошибку. Это кажется очень странным, поскольку Boost скомпилирован с нуля, и PCL тоже. Единственное, что может быть отметить на выходе CMake, я получаю это странное противоречивое сообщение:

-- checking for module 'eigen3' 
-- package 'eigen3' not found 
-- Eigen found (include: /usr/local/include/eigen3) 
+0

Возможно, вы установили boost без создания библиотек boost. Многого повышения можно использовать только с помощью заголовочных файлов, но для некоторых функций требуются библиотеки, которые должны быть явно построены. Ищите библиотеки libboost_ * (например, libboost_thread) в вашем каталоге установки boost, чтобы узнать, существуют ли они. – Andy

+0

Хорошо спасибо, в '/ usr/lib' Я, между прочим,« libboost_thread-mt.a' и 'libboost_thread-mt.dylib'. Файл 'dylib' ссылается на CMake (см. Отредактированный вопрос). Теперь я переустанавливаю Boost, чтобы убедиться, что это улучшает ситуацию. –

+0

Просто хедз-ап: не используйте тег [PCL]. Это не связано с облачной библиотекой Point Cloud. – Bart

ответ

0

Является ли это «старая версией подъема» проблемы?

Возможно, компоновщик ищет функции, которые существуют только в более новой версии повышения, чем тот, который вы создали и установили.

Двойная проверка, какая версия повышения рекомендуется библиотекой Point Cloud, и какая версия повышения у вас есть.

Смежные вопросы