在Ubuntu 20.04上从零编译Octomap库,顺便搞定Qt5依赖(附避坑指南)

张开发
2026/4/16 12:34:53 15 分钟阅读

分享文章

在Ubuntu 20.04上从零编译Octomap库,顺便搞定Qt5依赖(附避坑指南)
在Ubuntu 20.04上从零编译Octomap库Qt5依赖全攻略与避坑实践如果你正在Ubuntu 20.04上尝试编译Octomap库却因为Qt版本问题卡在依赖环节这篇文章正是为你准备的。不同于官方文档的简略说明我们将深入解决那些让开发者头疼的Qt5兼容性问题从环境配置到编译验证手把手带你走完全流程。1. 环境准备避开Qt4的坑Ubuntu 20.04默认移除了Qt4支持而Octomap官方文档中的安装指令仍停留在Qt4时代。直接运行老教程里的命令sudo apt-get install libqt4-dev libqt4-opengl-dev libqglviewer-dev-qt4你会遭遇包不存在的错误。这时候需要替换为Qt5等效的依赖sudo apt-get update sudo apt-get install -y cmake doxygen libqt5opengl5-dev qtbase5-dev libqglviewer-dev-qt5注意libqglviewer-dev-qt5这个包在默认源中可能找不到需要先添加Universe仓库sudo add-apt-repository universe sudo apt-get update验证Qt5环境是否就绪qmake --version # 应显示Qt5.x版本2. 源码获取与编译配置获取最新Octomap源码git clone --depth1 https://github.com/OctoMap/octomap.git cd octomap创建构建目录并配置CMakemkdir build cd build cmake -DCMAKE_BUILD_TYPERelease -DBUILD_TESTINGOFF ..关键参数说明参数作用推荐值CMAKE_BUILD_TYPE编译类型ReleaseBUILD_TESTING禁用测试OFFOCTOVIS_QT5强制Qt5自动检测遇到Qt5相关错误时可以显式指定Qt5路径cmake -DQt5_DIR/usr/lib/x86_64-linux-gnu/cmake/Qt5 ..3. 编译过程问题排查执行编译make -j$(nproc)常见错误及解决方案QGLViewer找不到sudo apt-get install libqglviewer-dev-qt5OpenGL链接失败 在CMakeLists.txt中添加find_package(OpenGL REQUIRED) target_link_libraries(octovis Qt5::Widgets OpenGL::GL)C14标准问题 修改顶层CMakeLists.txt添加set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)4. 安装与验证安装到系统路径sudo make install验证安装是否成功cd ../bin ./simple_example ./octovis simple_tree.bt如果可视化窗口正常显示立方体地图说明编译完全成功。5. 进阶自定义地图开发利用编译好的环境创建自定义地图在octomap/octomap/src目录新建custom_map.cpp参考以下模板#include octomap/octomap.h using namespace octomap; int main() { OcTree tree(0.05); // 5cm分辨率 // 添加一堵墙 for(int x0; x50; x){ for(int z0; z10; z){ tree.updateNode(point3d(x*0.1, 0, z*0.1), true); } } tree.writeBinary(custom_wall.bt); return 0; }修改CMakeLists.txt添加编译目标add_executable(custom_map custom_map.cpp) target_link_libraries(custom_map octomap)重新编译后即可生成自定义地图cd ../../build make ../bin/custom_map ../bin/octovis custom_wall.bt6. 性能优化技巧并行编译加速make -j$(nproc)调试符号剥离节省空间strip ../bin/octovis分辨率选择建议分辨率内存占用适用场景0.1m低大场景0.05m中精细建模0.01m高高精度实验遇到可视化卡顿时可以尝试关闭FreeSpace显示按F键切换

更多文章