当前位置: 首页 > news >正文

ros2工程在普通用户下正常编译但root下编译无法成功也不会自动停止

先检测是什么问题:
root@ros2-virtual-machine:/opt/test/pick_flow# colcon build --symlink-install --packages-select pick_working_flow --event-handlers console_direct+
再根据问题解决:
 

从您的输出中,我发现了导致编译卡死的核心问题。错误日志显示两个关键问题:

log

复制

下载

TypeError: argument of type 'NoneType' is not iterable
File "/usr/lib/python3/dist-packages/colcon_cmake/task/cmake/__init__.py", line 114, in get_buildfileif 'Visual Studio' in generator:

问题根本原因

  1. CMake 生成器检测失败
    colcon 在尝试检测 CMake 生成器时,generator 变量变成了 None,导致 'Visual Studio' in generator 语句崩溃

  2. CMake 缓存文件未正确生成
    在 build/pick_working_flow/CMakeCache.txt 文件中缺少 CMAKE_GENERATOR 的定义

  3. CMake 配置阶段未完成
    卡在 [Processing: pick_working_flow] 表明 CMake 未能完成配置阶段


解决方案步骤

步骤 1:手动清理 CMake 缓存

bash

复制

下载

# 进入问题包的构建目录
cd /opt/test/pick_flow/build/pick_working_flow# 删除所有 CMake 缓存和中间文件
rm -rf CMakeCache.txt CMakeFiles .cmake
步骤 2:手动运行 CMake 并指定生成器

bash

复制

下载

# 显式指定 Unix Makefiles 生成器
cmake -G "Unix Makefiles" \-DCMAKE_PREFIX_PATH=/opt/ros/<your_ros_distro> \-DCMAKE_INSTALL_PREFIX=/opt/test/pick_flow/install/pick_working_flow \/opt/test/pick_flow/src/pick_working_flow
步骤 3:修复环境变量(关键)

bash

复制

下载

# 设置必需的编译环境变量
export CMAKE_GENERATOR="Unix Makefiles"
export COLCON_CMAKE_GENERATOR="Unix Makefiles"
步骤 4:修改 colcon 配置(临时绕过)

python

复制

下载

# 编辑 colcon 的 cmake 支持文件
sudo nano /usr/lib/python3/dist-packages/colcon_cmake/task/cmake/__init__.py# 找到第 114 行附近,修改为:
if generator and 'Visual Studio' in generator:
步骤 5:重新编译(带详细日志)

bash

复制

下载

colcon build --symlink-install \--packages-select pick_working_flow \--cmake-args \-DCMAKE_GENERATOR="Unix Makefiles" \--event-handlers console_direct+ \--parallel-workers 1  # 单线程编译便于调试
http://www.xdnf.cn/news/734653.html

相关文章:

  • RAG混合检索:倒数秩融合RRF算法
  • 零硬件成本玩转嵌入式通信!嵌入式仿真实验教学平台解锁STM8S串口黑科技
  • 对COM组件的调用返回错误 HRESULT E_FAIL
  • Linux操作系统之进程(四):命令行参数与环境变量
  • 统计C盘各种扩展名文件大小总和及数量的PowerShell脚本
  • << C程序设计语言第2版 >> 练习 1-23 删除C语言程序中所有的注释语句
  • Python基于Django的校园打印预约系统(附源码,文档说明)
  • 天拓四方工业互联网平台赋能:地铁电力配电室综合监控与无人巡检,实现效益与影响的双重显著提升
  • URL编码次数差异分析:一次编码 vs 二次编码
  • 【动手学深度学习】2.4. 微积分
  • Python中openpyxl库的基础解析与代码实例
  • NIO----JAVA
  • API:解锁网络世界的无限可能
  • Leetcode 340. 至多包含 K 个不同字符的最长子串
  • Java并发
  • [特殊字符] 超强 Web React版 PDF 阅读器!支持分页、缩放、旋转、全屏、懒加载、缩略图!
  • Elasticsearch的写入流程介绍
  • vscode实时预览编辑markdown
  • 树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)
  • <3>, 常用控件
  • wheelgames
  • C++17新特性 类型推导
  • 虚拟化数据恢复—XenServer虚拟机虚拟磁盘文件丢失的数据恢复案例
  • 集成测试 maestro-我的第一个flow以及第一次云端测试
  • React和原生事件的区别
  • π0-FAST-针对VLA模型的高效动作token化技术-2025.1.16-开源
  • 使用 Fetch + Streams 处理流式响应(Streaming Response)
  • Odoo OWL 框架深度研究(VIP10万字版)
  • 特伦斯 S75 电钢琴:重构演奏美学的极致表达
  • 小黑大语言模型应用探索:langchain智能体构造源码demo搭建1(初步流程)