librealsense macOS 源码构建与打包指南:从工具链安装到应用分发
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
本篇指南以仓库 doc/installation_osx.md 为主线,完整讲解 RealSense SDK(librealsense)在 macOS 平台上的源码编译、CMake 配置、常见构建错误排查以及应用打包流程。读完本文,你将能够在本机从零搭建构建环境、生成 Xcode 工程并产出可用的librealsense2.dylib,并掌握把 SDK 及其依赖(libusb)正确捆绑进 macOS 应用程序的方法。
一、macOS 支持现状与使用前提
librealsense 对 macOS 的支持并非完整覆盖 SDK 全部功能,官方文档在开头即给出了明确提示:
- R200 与 ZR300 设备:需要功能子集的 legacy librealsense(原文档外部链接,仓库本身不包含该代码),当前主线分支不再提供完整支持;
- 当前版本的限制:
- RealSense Viewer 不受支持(
BUILD_GRAPHICAL_EXAMPLES相关的图形工具在当前 macOS 版本不可用); - 运动传感器(IMU)被禁用。
- RealSense Viewer 不受支持(
此外,从macOS 12(Monterey)起,由于 macOS 的 USB 安全策略变化,以及需要覆盖系统默认的 UVC 驱动,绝大多数基于 libusb 的 librealsense 工具都必须以**提升权限(sudo)**运行,例如:
# 示例(实际可执行文件位于构建产物的 Release 目录,见下文说明) sudo examples/rs-multicam sudo examples/rs-enumerate-devices sudo examples/rs-hello-realsense sudo examples/rs-depth从当前仓库的目录结构看,原文档中提到的示例对应的源码分别位于 examples/multicam/rs-multicam.cpp、examples/hello-realsense/rs-hello-realsense.cpp、examples/C/depth/rs-depth.c,而设备枚举工具位于 tools/enumerate-devices/ 目录下。构建完成后,可执行文件会被输出到<构建目录>/<构建类型>/下(该行为由 CMake/unix_config.cmake 中的CMAKE_RUNTIME_OUTPUT_DIRECTORY设置决定,默认构建类型为Release),因此实际运行路径形如./Release/rs-hello-realsense。
二、从源码构建:完整环境准备
2.1 安装命令行工具链
macOS 上编译源码需要 Xcode 命令行工具。两种方式任选其一:
# 方式一:仅命令行工具(推荐) sudo xcode-select --install # 方式二:通过 App Store 下载 Xcode 6.0+Xcode 6.0 是官方文档给出的最低版本要求。配置阶段还需要重置开发者目录,构建章节会用到:
sudo xcode-select --reset2.2 安装 Homebrew 包管理器
通过终端安装 Homebrew,然后用它安装编译依赖:
brew install cmake libusb pkg-config openssl各依赖的作用:
- cmake:构建系统。librealsense 要求CMake 3.10 及以上(见仓库顶层 CMakeLists.txt 的
cmake_minimum_required(VERSION 3.10)),Homebrew 提供的版本通常满足要求,也可从 CMake 官方站点下载更新版本; - libusb:USB 通信后端核心依赖。macOS 上的 libusb 需要链接 Apple 的
CoreFoundation与IOKit框架,该链接逻辑在 CMake/external_libusb.cmake 中有明确实现; - pkg-config:辅助查找系统库;
- openssl:仅在开启固件更新检查(
CHECK_FOR_UPDATES)时才需要,详见下文 CMake 配置。
2.3 克隆仓库并生成构建工程
git clone https://github.com/realsenseai/librealsense.git cd librealsense mkdir build && cd build sudo xcode-select --reset cmake .. -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=true -DFORCE_RSUSB_BACKEND=ON make -j2构建过程会生成librealsense2.dylib(共享库)、示例程序与工具。make -j2使用双核并行编译,可按机器核数调整并行度。
三、核心 CMake 配置选项与 macOS 相关源码佐证
3.1 FORCE_RSUSB_BACKEND:macOS 上强制启用的 USB 后端
FORCE_RSUSB_BACKEND是 macOS 构建必须开启的选项。官方选项说明为:"Use RS USB backend, mandatory for Win7/MacOS/Android, optional for Linux"(见 CMake/lrs_options.cmake)。
从源码看,这个"必须"是构建系统强制保证的:在 CMake/unix_config.cmake 中,当平台为APPLE时无条件将FORCE_RSUSB_BACKEND置为ON,并据此选定RS2_USE_LIBUVC_BACKEND后端;而 src/backend.cpp 通过预处理指令保证有且仅有一个UVC 后端宏被定义,macOS 上即走 "UVC support will be provided via libuvc / libusb backend" 分支,并因此引入hid/、uvc/、rsusb-backend/、libuvc/等源码模块(见 src/CMakeLists.txt)。
这也解释了为何原文档强调 macOS 12+ 必须用sudo运行工具:RSUSB 后端直接通过 libusb 访问底层 USB 设备,需要越过系统 UVC 驱动的权限门槛。
3.2 CHECK_FOR_UPDATES:macOS 默认关闭的更新检查
CHECK_FOR_UPDATES用于构建版本更新检查功能(依赖 libcurl + OpenSSL)。由于 macOS 默认不自带 OpenSSL,该选项在 macOS 上默认关闭,仅 Linux/Windows 默认开启(见 CMake/lrs_options.cmake):
# This feature requires OpenSSL installation on Linux/OSX, OSX normally does not come with OpenSSL integrated(Thats why default is OFF on OSX) if (NOT APPLE) option(CHECK_FOR_UPDATES "Checks for versions updates" ON) else() option(CHECK_FOR_UPDATES "Checks for versions updates" OFF) endif()若手动开启-DCHECK_FOR_UPDATES=ON,则必须确保 OpenSSL 可被找到(否则触发下文 4.2 节的错误),且 CMake/external_libcurl.cmake 会额外要求链接 OpenSSL 与CoreFoundation、SystemConfiguration框架。
3.3 常用构建选项速查
以下选项均定义于 CMake/lrs_options.cmake,可结合实际需求组合:
| 选项 | 默认值 | 说明 |
|---|---|---|
BUILD_EXAMPLES | ON | 构建非图形示例(如 rs-hello-realsense、rs-capture) |
BUILD_GRAPHICAL_EXAMPLES | ON | 构建图形示例(Viewer、深度质量工具等),隐含启用BUILD_GLSL_EXTENSIONS;macOS 当前版本不支持 Viewer |
FORCE_RSUSB_BACKEND | OFF(macOS 上强制 ON) | 使用 RSUSB(libuvc/libusb)后端,macOS 必选 |
CHECK_FOR_UPDATES | macOS 上 OFF | 固件/版本更新检查,依赖 OpenSSL |
BUILD_SHARED_LIBS | ON | 构建共享库(产出librealsense2.dylib) |
BUILD_UNIT_TESTS | OFF | 构建单元测试 |
BUILD_PYTHON_BINDINGS | OFF | 构建 Python 绑定 |
BUILD_WITH_CUDA | OFF | 启用 CUDA 加速 |
BUILD_WITH_OPENMP | OFF | 启用 OpenMP 多线程 |
四、构建常见错误与解决方案
4.1ld: library not found for -lusb-1.0
部分 Mac 系统在make或 Xcode 编译时报找不到 libusb 链接库。官方给出的规避方式是设置环境变量:
/bin/launchctl setenv LIBRARY_PATH /usr/local/libLIBRARY_PATH会被链接器作为额外的库搜索路径,使-lusb-1.0能命中 Homebrew 安装的 libusb。若 Homebrew 前缀不同(如 Apple Silicon 下为/opt/homebrew),需按实际安装路径调整。
4.2Could NOT find OpenSSL
该错误通常在设置-DCHECK_FOR_UPDATES=ON时出现(见 3.2 节)。规避方法是把 OpenSSL 安装根目录导出为全局变量:
export OPENSSL_ROOT_DIR=`brew --prefix openssl`让 CMake 的find_package(OpenSSL REQUIRED)(CMake/external_libcurl.cmake)能够定位到 Homebrew 的 OpenSSL。
4.3 更多构建配置
仓库 wiki 页面提供了更完整的构建配置说明(原文档外部链接),仓库内可对照的权威配置清单即 CMake/lrs_options.cmake 本身,其中每个选项都带有注释与默认值,是排查构建行为的第一手资料。
五、打包发布 macOS 应用程序
将 SDK 集成到自有 macOS 应用中时,有两个关键步骤,否则运行时会出现 dylib 加载失败。
5.1 用 install_name_tool 修复动态链接路径
librealsense 运行依赖 libusb,发布时必须将 libusb 一并捆绑进应用。由于 Homebrew 安装的 libusb 动态库路径是绝对路径(如/usr/local/opt/libusb/lib/libusb-1.0.0.dylib),直接分发会导致目标机器上无法加载。使用install_name_tool将其改为相对运行时路径(@rpath):
install_name_tool -change /usr/local/opt/libusb/lib/libusb-1.0.0.dylib @rpath/libusb-1.0.0.dylib librealsense2.dylib该命令把librealsense2.dylib中对 libusb 的引用从绝对路径改写为@rpath/libusb-1.0.0.dylib,使应用在启动时通过自身的 rpath 搜索到随包分发的库。
5.2 拷贝动态库到 Frameworks 目录
将以下两个动态库放入应用包的Frameworks目录:
# 拷贝到 <YourApp.app>/Contents/Frameworks/ libusb-1.0.0.dylib librealsense2.dylib同时应确保应用的 Mach-O 链接设置中 rpath 指向@executable_path/../Frameworks(或通过install_name_tool -add_rpath添加),这样@rpath/libusb-1.0.0.dylib才能被正确解析。
六、小结
macOS 上使用 librealsense 的完整路径可概括为:确认设备与功能支持范围(R200/ZR300 走 legacy 分支,macOS 12+ 需 sudo、不支持 Viewer 与 IMU)→ 安装 Xcode 工具链与 Homebrew 依赖 → 以FORCE_RSUSB_BACKEND=ON配置并编译 → 通过环境变量规避 libusb/OpenSSL 链接问题 → 用install_name_tool与 Frameworks 目录完成应用打包。构建系统的相关行为均可在 CMake/unix_config.cmake、CMake/lrs_options.cmake 与 src/backend.cpp 中逐行验证,建议在遇到与预期不符的行为时优先回到这些文件确认当前版本的默认配置。
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考