news 2026/5/20 12:44:09

MIT Cheetah-Software编译手记:搞定Qt5.10.0路径、LCM依赖与那些诡异的C++报错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MIT Cheetah-Software编译手记:搞定Qt5.10.0路径、LCM依赖与那些诡异的C++报错

MIT Cheetah-Software编译实战:Qt路径配置、LCM依赖与C++报错深度解析

1. 环境准备与依赖管理

在Ubuntu 20.04环境下编译MIT Cheetah-Software,首先需要确保系统基础环境配置正确。不同于普通开源项目,这个四足机器狗的控制系统对Qt版本、LCM消息中间件和Eigen库有着严格的要求。

关键依赖版本要求

Qt == 5.10.0 LCM >= 1.4.0 Eigen >= 3.3.7

注意:Qt 5.10.0是项目明确要求的版本,其他版本可能导致界面兼容性问题。建议在全新环境中安装,避免与其他Qt项目产生冲突。

安装基础开发工具链:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git libglib2.0-dev \ mesa-common-dev freeglut3-dev coinor-libipopt-dev \ libblas-dev liblapack-dev gfortran

2. Qt 5.10.0定制化安装

Qt作为图形界面框架,其路径配置是编译过程中的第一个拦路虎。官方提供的find_qt_path.sh脚本常因路径不匹配导致编译失败。

正确安装步骤

  1. 下载Qt 5.10.0离线安装包(约2.3GB)
  2. 赋予执行权限:
    chmod +x qt-opensource-linux-x64-5.10.0.run
  3. 执行安装并仅勾选以下组件:
    • Qt 5.10.0 → Desktop gcc 64-bit
    • Qt Charts
    • Qt Data Visualization

安装完成后,需要修改项目中的路径查找脚本:

# 修改Cheetah-Software/scripts/find_qt_path.sh sed -i 's/Qt5/Qt5.10.0/g' scripts/find_qt_path.sh

常见问题解决方案:

问题现象解决方法
找不到qmake检查~/.bashrc中QT_PATH环境变量
界面无法启动安装libxcb-xinerama0:sudo apt install libxcb-xinerama0
插件加载失败设置QT_PLUGIN_PATH指向Qt5.10.0/plugins

3. LCM消息中间件网络问题攻坚

LCM(Lightweight Communications and Marshalling)是项目实时通信的核心组件,其安装过程常因网络问题受阻。

稳定安装方案

  1. 使用Git镜像源加速克隆:
    git clone https://gitee.com/mirrors/lcm.git
  2. 手动编译安装:
    cd lcm && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install
  3. 验证安装:
    lcm-gen --version

提示:如果遇到Python绑定问题,需确保安装了python3-dev:

sudo apt install python3-dev

4. C++编译报错深度解析

项目采用严格的编译选项,将警告视为错误(-Werror),这导致许多开发者卡在最后一步。以下是典型报错及解决方案:

4.1 stringop-truncation错误

error: ‘char* __builtin_strncpy()’ specified bound equals destination size [-Werror=stringop-truncation]

解决方案: 修改项目根目录CMakeLists.txt:

# 将 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror") # 改为 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

4.2 内存不足引发的编译中断

fatal error: Killed signal terminated program cc1plus

临时交换分区创建

sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

4.3 缺失stropts.h头文件

fatal error: stropts.h: No such file or directory

变通解决方案

sudo touch /usr/include/stropts.h echo "#include <sys/ioctl.h>" | sudo tee -a /usr/include/stropts.h

5. 编译优化与调试技巧

经过上述步骤后,推荐采用以下编译策略:

  1. 首次编译使用单线程:
    make -j1
  2. 成功后改用多线程加速:
    make -j$(nproc)
  3. 针对性重新编译:
    touch src/common/CMakeLists.txt && make

性能优化参数

# 在CMakeLists.txt中添加 set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native") set(CMAKE_C_FLAGS_RELEASE "-O3 -march=native")

6. 仿真环境验证

成功编译后,通过以下命令启动仿真:

./sim/sim & ./user/MIT_Controller/mit_ctrl m s

常见仿真问题排查

现象检查点
无四肢显示确认MIT_Controller是否正确编译
关节抖动检查simulator.ini中的PD参数
无法站立验证robot_params.yaml中的质量参数

在VMware环境中,建议分配至少4核CPU和8GB内存以获得流畅的仿真体验。如果遇到图形渲染问题,可以尝试改用VirtualBox或物理机安装Ubuntu。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 12:44:01

CANN/hcomm查询拓扑信息

查询拓扑信息 【免费下载链接】hcomm HCOMM&#xff08;Huawei Communication&#xff09;是HCCL的通信基础库&#xff0c;提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 背景 为了应对复杂的网络拓扑结构&#xff0c;通信算子需要根据…

作者头像 李华
网站建设 2026/5/20 12:40:57

从Web到桌面:ChatGPT-Next-Web的Next.js+Tauri跨端架构实践

从Web到桌面&#xff1a;ChatGPT-Next-Web的Next.jsTauri跨端架构实践 ChatGPT-Next-Web作为一款支持多端部署的AI对话应用&#xff0c;创新性地采用Next.js与Tauri技术栈&#xff0c;实现了"一次开发&#xff0c;多端运行"的架构目标。本文将深入剖析其技术架构&am…

作者头像 李华
网站建设 2026/5/20 12:40:02

终极macOS歌词工具LyricsX:让音乐播放器歌词同步变得简单

终极macOS歌词工具LyricsX&#xff1a;让音乐播放器歌词同步变得简单 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 你是否曾在macOS上听歌时&#xff0c;希望有一个完美的歌词显示工具…

作者头像 李华
网站建设 2026/5/20 12:40:02

终极指南:如何用Python脚本突破百度网盘下载限制

终极指南&#xff1a;如何用Python脚本突破百度网盘下载限制 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download 还在为百度网盘的非会员限速而烦恼吗&#xff1f;每次下载大文件都要等待数小时甚至…

作者头像 李华