我正在学习一系列安装PCL的教程。。。我得到以下错误:
ld: library not found for -lflann
我使用brew install pcl
安装了pcl
。这是我的CMakeList.txt
set(PCL_DIR "/usr/local/Cellar/pcl/1.9.1/share/pcl-1.9/")
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd_write)
set(PCL_DIR "/usr/local/Cellar/pcl/1.9.1/share/pcl-1.9/")
find_package(PCL 1.9 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (pcd_write pcd_write.cpp)
target_link_libraries (pcd_write ${PCL_LIBRARIES})
cmake运行良好并创建Makefile。运行make时,我得到:
[ 50%] Linking CXX executable pcd_write
ld: library not found for -lflann
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [pcd_write] Error 1
make[1]: *** [CMakeFiles/pcd_write.dir/all] Error 2
make: *** [all] Error 2
有没有更新的、明确的指南来在macOS Mojave上安装PCL?谢谢
我也有同样的问题(在macOS Mojave上构建pcl作为ROS Kinetic的一部分时(。我的解决方法是在CMakeFiles的所有相关子文件夹中打开link.txt
,并进行以下替换:
- 用
/usr/local/lib/libflann.dylib
替换-lflann
- 用
/usr/local/lib/libflann_cpp.dylib
代替-lflann_cpp
请注意,这些情况在某些文件中可能会发生多次。由于我在整个构建过程中使用catkin
,因此这些文件的位置可能与您的略有不同。
诚然,这个解决方案非常棘手,我相信有一种更合适的方法可以做到这一点,但它使构建工作顺利进行。
也许解决这个问题的最好方法是下载pcl并自行编译。似乎来自brew的pcl(1.9.1_4(与FLANN(1.9.1_7(有错误的链接
无论如何,我们可以破解这个。。。通过修改'/usr/local/Cellar/pcl/1.9.1_4/share/pcl-1.9/Modules'中的FindFLANN.cmake文件
在文件的开头添加:
set(FLANN_LIBRARIES /usr/local/Cellar/flann/1.9.1_7/lib/libflann.dylib /usr/local/Cellar/flann/1.9.1_7/lib/libflann_cpp.dylib)
set(FLANN_FOUND TRUE)
如果你正在为在Mac上构建ROS而奋斗,希望这会有所帮助:(
我在Mojave 10.14 上通过以下步骤成功构建了它
- 步骤1
brew install boost
brew install eigen
brew install flann
brew install vtk
- 步骤2
git clone https://github.com/PointCloudLibrary/pcl.git
mkdir BUILD
cd BUILD
cmake ..
make
sudo make install