香橙派上编译librealsense 2.55.1,我踩过的网络依赖下载坑(附手动编译json和libcurl的保姆级操作)

张开发
2026/6/6 23:41:38 15 分钟阅读
香橙派上编译librealsense 2.55.1,我踩过的网络依赖下载坑(附手动编译json和libcurl的保姆级操作)
香橙派离线编译librealsense全攻略手动解决json与libcurl依赖问题当你在香橙派上尝试编译librealsense时最令人崩溃的瞬间莫过于看着CMake进度条卡在Git子模块下载环节——网络连接超时、TLS握手失败、证书验证错误这些报错信息像一堵高墙挡在你和项目编译成功之间。特别是在国内网络环境下从GitHub拉取nlohmann/json和libcurl等依赖项几乎成了一场耐心与运气的较量。1. 问题根源与解决思路每次执行cmake ..命令时librealsense的构建系统会通过ExternalProject_Add自动下载多个关键依赖项。这个过程存在三个典型痛点Git协议不稳定常见的gnutls_handshake()失败或RPC failed错误国内访问GitHub速度慢大仓库如libcurl容易触发early EOF证书验证问题特别是使用代理或特殊网络环境时传统解决方案的局限性调整Git缓存http.postBuffer对TLS错误无效反复重试既耗时又不可靠更换协议如SSH需要配置密钥且不能解决根本问题我们的终极解决方案是手动下载依赖源码包本地编译安装修改CMake配置绕过在线下载确保编译环境一致性2. 准备工作与环境配置在开始之前请确保你的香橙派已具备以下基础环境sudo apt update sudo apt install -y \ git cmake libssl-dev libusb-1.0-0-dev \ pkg-config libgtk-3-dev libglfw3-dev关键目录结构预览~/librealsense_offline_build/ ├── librealsense-2.55.1/ # 主项目目录 ├── json-3.11.2/ # 手动下载的json库 └── curl-7.85.0/ # 手动下载的curl库提示建议在用户目录下创建专门的工作目录避免权限问题3. 手动处理nlohmann/json依赖3.1 获取json源码首先直接从官方仓库下载稳定版本避免主分支的不稳定性wget https://github.com/nlohmann/json/releases/download/v3.11.2/json.hpp wget https://github.com/nlohmann/json/archive/refs/tags/v3.11.2.tar.gz tar -xzvf v3.11.2.tar.gz cd json-3.11.23.2 编译与安装json库是header-only的但librealsense的CMake配置期望一个完整构建mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX/usr/local sudo make install3.3 修改CMake配置定位到librealsense目录下的cmake/external_json.cmake注释掉在线下载部分# ExternalProject_Add( # nlohmann_json # GIT_REPOSITORY https://github.com/nlohmann/json.git # GIT_TAG v3.11.2 # ... # )添加本地路径声明find_package(nlohmann_json 3.11.2 REQUIRED)4. 攻克libcurl编译难题4.1 获取curl源码建议使用长期支持版本如7.85.0wget https://curl.se/download/curl-7.85.0.tar.gz tar -xzvf curl-7.85.0.tar.gz cd curl-7.85.04.2 定制化编译选项针对嵌入式平台的特殊配置./configure \ --prefix/usr/local \ --disable-shared \ --enable-static \ --with-openssl \ --without-librtmp \ --disable-ldap关键参数说明参数作用推荐值--disable-shared避免动态库冲突必选--with-openssl启用SSL支持必选--without-librtmp减少依赖推荐--disable-ldap禁用不必要协议推荐4.3 安装与验证make -j$(nproc) sudo make install验证安装curl-config --version # 应显示7.85.04.4 修改CMake配置编辑cmake/external_libcurl.cmakefind_package(CURL REQUIRED) if(NOT CURL_FOUND) message(FATAL_ERROR 请手动安装libcurl 7.85.0) endif()5. 完整编译librealsense现在可以开始主项目编译cd ~/librealsense-2.55.1 mkdir build cd build cmake .. \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_EXAMPLESON \ -DBUILD_GRAPHICAL_EXAMPLESOFF \ -DFORCE_LIBUVCON常见问题处理找不到已安装的库export PKG_CONFIG_PATH/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH符号链接问题sudo ldconfigUSB权限问题sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger6. ROS1集成特别说明如果需要与ROS1配合使用需注意版本匹配确认realsense_ros分支与librealsense版本兼容修改catkin_ws/src/realsense_ros/CMakeLists.txtfind_package(librealsense2 REQUIRED) include_directories( ${catkin_INCLUDE_DIRS} /usr/local/include )编译时指定库路径catkin_make -DCMAKE_PREFIX_PATH/usr/local7. 验证与调试安装完成后运行以下命令验证realsense-viewer # 或 roslaunch realsense2_camera rs_camera.launch典型问题排查表现象可能原因解决方案IMU无数据固件不匹配升级相机固件设备未识别权限问题检查udev规则段错误库版本冲突清理旧版本图像撕裂USB带宽不足更换USB3.0接口在完成所有步骤后我的香橙派5成功实现了D435i的RGB、深度、IMU数据同步在ROS1中稳定运行realsense节点系统负载低于30%1080p分辨率下

更多文章