You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust依赖r2r与opencv时cargo build失败问题排查

解决Ubuntu 22.04 + ROS 2 Humble下Rust r2r与opencv依赖共存编译失败的问题

这个问题的核心是source ROS 2环境后,ROS的环境变量干扰了libclang的查找路径,导致opencv的构建脚本无法正确加载系统的libclang库。以下是具体解决步骤:

1. 先确保系统依赖安装完整

首先安装Rust opencv和libclang所需的系统级依赖:

sudo apt update && sudo apt install libclang-dev libopencv-dev llvm-dev

2. 手动指定libclang路径编译

source ROS 2环境后(比如执行source /opt/ros/humble/setup.bash),直接指定系统libclang的路径再执行编译:

export LIBCLANG_PATH=/usr/lib/x86_64-linux-gnu/
cargo build

Ubuntu 22.04的libclang共享库默认位于/usr/lib/x86_64-linux-gnu/,这个路径不会被ROS环境覆盖,强制让opencv构建脚本使用系统库即可避开冲突。

3. 配置cargo默认环境变量(可选,一劳永逸)

如果不想每次编译都手动设置环境变量,可以在项目根目录创建.cargo/config.toml文件,添加以下内容:

[env]
LIBCLANG_PATH = "/usr/lib/x86_64-linux-gnu/"

之后无论是否source ROS环境,cargo都会自动加载这个环境变量,确保opencv构建时能找到正确的libclang。

验证

  • 单独编译r2r:source ROS后执行cargo build --no-default-features -p r2r(或暂时注释opencv依赖后编译项目),确认构建正常。
  • 单独编译opencv:不source ROS时执行cargo build --no-default-features -p opencv,确认构建正常。
  • 同时编译:按上述方法设置环境变量后执行cargo build,应该能成功完成构建。

内容的提问来源于stack exchange,提问作者Clock Work Gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:47:36