ubuntu20.04
编译lego-loam
在workspace下catkin_make -j1失败
报错:
/usr/bin/ld: /usr/local/lib/libpcl_recognition.so: undefined reference to operator delete[](void*, unsigned long)@Qt_5' /usr/bin/ld: /usr/local/lib/libpcl_recognition.so: undefined reference to
__cxa_throw_bad_array_new_length@Qt_5'
/usr/bin/ld: /usr/local/lib/libpcl_recognition.so: undefined reference to `operator delete(void*, unsigned long)@Qt_5'
collect2: error: ld returned 1 exit status
make[2]: *** [LeGO-LOAM/LeGO-LOAM/CMakeFiles/imageProjection.dir/build.make:453:/home/wxl02/wxl_ws/devel/lib/lego_loam/imageProjection] 错误 1
make[1]: *** [CMakeFiles/Makefile2:1524:LeGO-LOAM/LeGO-LOAM/CMakeFiles/imageProjection.dir/all] 错误 2
make: *** [Makefile:141:all] 错误 2
Invoking "make -j1" failed
看到在2022年关于一个帖子的回答和我的情况很像。但是我根据帖子里说的安装依赖。并未解决
帖子链接:https://ask.csdn.net/questions/7702801
这个错误似乎与PCL(Point Cloud Library)的链接问题有关,特别是与Qt版本相关的问题。在编译LeGO-LOAM时,链接器找不到与Qt_5相关的符号。
检查Qt的版本:确保您的系统上安装了Qt 5,并且安装了PCL的Qt模块。您可以运行以下命令来查看已安装的Qt版本:
bash
Copy code
qmake --version
如果没有安装Qt 5,您可以尝试安装它。如果已安装Qt 5,确保PCL与正确版本的Qt链接。
检查PCL的版本:确保您使用的PCL版本与LeGO-LOAM兼容。某些版本的LeGO-LOAM可能需要特定版本的PCL。请查阅LeGO-LOAM的文档以获取有关所需PCL版本的信息,并确保安装了正确版本的PCL。
检查依赖项:确保您安装了LeGO-LOAM和PCL所需的所有依赖项。您可以使用以下命令来安装一些常见的依赖项:
bash
Copy code
sudo apt-get install cmake g++ git libboost-all-dev libeigen3-dev libvtk6-dev libproj-dev
重新编译:有时,重新编译项目可以解决链接问题。首先尝试清理构建目录,然后重新运行catkin_make:
bash
Copy code
cd /path/to/your/catkin_workspace
catkin clean
catkin_make -j1
查看编译选项:检查LeGO-LOAM项目的CMake配置是否正确。您可以查看项目的CMakeLists.txt文件,确保PCL和Qt的相关库被正确链接。如果需要,手动编辑CMakeLists.txt以确保这些库正确链接。
升级PCL和Qt:如果可能的话,尝试升级PCL和Qt到最新版本,以确保您使用的是最新的修复了可能存在的问题的版本。