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

M2 Mac用librealsense调用RealSense相机时libusb段错误求助

解决思路

1. 排查架构兼容性问题

  • M2 Mac为ARM64架构,先确认安装的libusb是原生ARM64版本,而非x86_64转译版本。执行命令lipo -info /usr/local/lib/libusb-1.0.0.dylib(替换为你的libusb实际路径),输出需包含arm64。
  • 若用Homebrew安装libusb,确保Homebrew是ARM64版本(M2默认应为该版本,若之前装过x86版本,需重新安装到/opt/homebrew路径下)。

2. 验证librealsense的编译/安装配置

  • 若源码编译librealsense,编译时需指定ARM64架构,cmake阶段添加参数-DCMAKE_OSX_ARCHITECTURES=arm64,避免生成x86架构代码。
  • 若通过包管理器安装,确认安装的是ARM版本的librealsense,而非x86版本。

3. 检查libusb上下文初始化状态

  • EXC_BAD_ACCESS(address=0x28)通常指向未初始化指针访问,需确认_ctx是否完成正确初始化:
    • 检查libusb_init(&_ctx)是否在libusb_get_device_list之前执行且返回成功(返回值为0)。
    • 调试时查看_ctx的值,若为NULL或野指针,说明上下文初始化失败,需排查初始化阶段的权限或依赖问题。

4. 确认USB设备权限

  • M2 Mac的USB设备权限可能导致异常,先尝试用sudo运行程序,若崩溃消失,说明是权限不足:
    • 打开系统设置→隐私与安全性→USB,确保你的程序(或VS Code,若调试时运行)在权限列表中且已开启访问权限。
    • 可将RealSense相机的VID/PID添加到系统允许列表,解决长期权限问题。

5. 调整依赖版本

  • 部分libusb版本在M2 Mac上存在兼容性bug,尝试降级到1.0.25版本或升级至最新稳定版。
  • 同步调整librealsense版本,确保与当前libusb版本兼容,比如切换到LTS版本或最新稳定版。

6. 编写最小化测试程序定位问题

  • 脱离librealsense,写一个纯libusb测试程序,验证核心调用是否正常:
    #include <libusb-1.0/libusb.h>
    #include <stdio.h>
    
    int main() {
        libusb_context *ctx = NULL;
        int ret = libusb_init(&ctx);
        if (ret != 0) {
            printf("libusb init failed: %d\n", ret);
            return 1;
        }
        libusb_device **list;
        ssize_t count = libusb_get_device_list(ctx, &list);
        printf("Device count: %zd\n", count);
        libusb_free_device_list(list, 1);
        libusb_exit(ctx);
        return 0;
    }
    
    编译运行:g++ test.cpp -lusb-1.0 -o test && ./test。若程序崩溃,说明问题出在libusb或系统配置;若正常,再逐步加入librealsense代码定位具体触发点。

内容的提问来源于stack exchange,提问作者Finn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:42:11