点云库从入门到精通 第五章3 pcl_visualizer_demo Ubuntu16.04
刚接触C++和PCL很多东西都不懂,如有不对的地方还请各位大神不吝赐教
一开始编译结果为
In function ‘boost::this_thread::sleep(boost::posix_time::ptime const&)’:
error: undefined reference to ‘boost::this_thread::hiden::sleep_until(timespec const$)’
error: collect2: error:ld returned 1 exit status
但是我已经成功编译boost并且CMakeLists.txt如下:
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(pcl_visualizer_viewports)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (pcl_visualizer_demo pcl_visualizer_demo.cpp)
target_link_libraries (pcl_visualizer_demo ${PCL_LIBRARIES})
查了很多资料死活找不到原因
期间还运行了如下代码
sudo apt-get install libpcl-dev pcl-tools
后来鬼使神差地把源代码重新解压了一遍,并放在 下载 中,再次编译同一个项目3 pcl_visualizer_demo得到的编译结果为:
No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so
解决方法为:
sudo ln -s /usr/lib/x86_64-linux-gnu/libproj.so.9 /usr/lib/x86_64-linux-gnu/libproj.so
接着继续编译,得到的结果为:
cannot find -lvtkproj4
解决方法为将CMakeLists.txt修改为如下:
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(pcl_visualizer_viewports)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
list(REMOVE_ITEM PCL_LIBRARIES “vtkproj4”)
add_executable (pcl_visualizer_demo pcl_visualizer_demo.cpp)
target_link_libraries (pcl_visualizer_demo ${PCL_LIBRARIES})
继续编译后成功
到现在我认为的原因是在修改CMakeLists.txt文件后应该重新编译,删除build文件后再次编译(不知道到底是不是这个原因,之前都是在Qt creator里修改CMakeLists.txt,保存后就直接编译了。
但是至于为什么一开始编译会出现
In function ‘boost::this_thread::sleep(boost::posix_time::ptime const&)’:
error: undefined reference to ‘boost::this_thread::hiden::sleep_until(timespec const$)’
error: collect2: error:ld returned 1 exit status
还是一头雾水,唯一的区别就是我把代码放在 下载 里,然后重新编译了一下,神奇。
虽然这次幸运地编译成功了,但是还是想知道具体的原因是啥,如果你也遇到和我一样的问题,也·可以试着解决一下,更希望能得到各位大神的指点,感激不尽!