当前位置: 首页 > 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  # 单线程编译便于调试

相关文章:

  • 历年南开大学计算机保研上机真题
  • flask入门
  • MySQL数据归档利器:pt-archiver原理剖析与实战指南
  • 阻止H5页面中键盘收起的问题
  • React从基础入门到高级实战:React 高级主题 - React Concurrent 特性:深入探索与实践指南
  • springboot文件上传下载
  • AgenticSeek,开源本地通用AI Agent,自主执行任务
  • 如何优化Hive的查询性能?请详细说明查询优化的各个层面(SQL优化、配置优化、资源优化等)和具体方法。
  • Oracle数据库性能优化的最佳实践
  • 数据结构 堆与优先级队列
  • 【数据库】数据库恢复技术
  • 使用 Cython 编译将.py文件加密成.so文件
  • Apptrace:APP安全加速解决方案
  • 企业知识库问答系统避坑指南:检索优化与生成一致性解决方案
  • 【Redis】hash
  • Haproxy
  • 不用 apt 的解决方案(从源码手动安装 PortAudio)
  • MiniMax V-Triune让强化学习(RL)既擅长推理也精通视觉感知
  • MyBatisPlus--快速入门
  • 【仿muduo库实现并发服务器】实现时间轮定时器
  • 公积金网站建设模板/武汉最新疫情
  • 有没有IT做兼职的网站/淘数据官网
  • 本地常州微信网站建设/建站平台哪个好
  • 网站数据库文件名/东莞做网页建站公司
  • 网站seo公司/seo培训优化课程
  • 安徽地方政府网站建设情况/如何做网销