树莓派4B(Ubuntu 22.04 Jammy arm64)上从源码编译安装 librealsense

由于树莓派4B (arm64架构) 无法使用 Intel 官方提供的 amd64 预编译包,只能通过源码编译的方式获得完整功能的 Intel RealSense SDK

bash 复制代码
dpkg --print-architecture
bash 复制代码
arm64

下面是在树莓派4B(Ubuntu 22.04 Jammy arm64)上从源码编译安装 librealsense 的标准步骤。

(一)准备工作

1. 更新系统并安装编译依赖

bash 复制代码
sudo apt update
sudo apt upgrade -y
sudo apt install -y git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev \
                    libglfw3-dev libgl1-mesa-dev libopengl0

安装一些系统包:

bash 复制代码
sudo apt install nlohmann-json3-dev
bash 复制代码
sudo apt install -y libcurl4-openssl-dev

安装当前运行内核的头文件:

bash 复制代码
sudo apt install -y linux-headers-$(uname -r)

2. 增大 swap(可选但推荐,树莓派内存有限)

(1)确认当前 swap 状态

bash 复制代码
free -h
swapon --show

如果输出为空或很小,说明需要增加 swap。

(2)创建一个 2GB 的 swap 文件

创建文件(2G,块大小1M,共2048块):

bash 复制代码
sudo fallocate -l 2G /swapfile

如果 fallocate 不支持(某些文件系统),改用 dd:

bash 复制代码
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

(3)设置正确的权限

bash 复制代码
sudo chmod 600 /swapfile
(4)格式化为 swap 并启用
bash 复制代码
sudo mkswap /swapfile
sudo swapon /swapfile
bash 复制代码
               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       989Mi       5.1Gi        43Mi       1.5Gi       6.4Gi
Swap:          1.0Gi          0B       1.0Gi
bash 复制代码
NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

(5)永久生效(开机自动挂载)

bash 复制代码
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

验证:

bash 复制代码
free -h

现在应该能看到 Swap 行显示 2G 可用。

3. 配置DNS

网络存在 DNS 解析问题:能够 ping 通 baidu.com 和 8.8.8.8,但无法解析 github.com。这通常是因为 DNS 服务器未返回 github.com 的正确 IP 地址(可能被污染或配置异常)

方法一:临时修复 DNS(推荐)

修改 /etc/resolv.conf 使用公共 DNS:

bash 复制代码
sudo nano /etc/resolv.conf

将内容改为:

bash 复制代码
nameserver 114.114.114.114
nameserver 8.8.8.8

保存后立即生效。

方法二:永久修改 DNS(防止重启丢失)

编辑 /etc/systemd/resolved.conf:

bash 复制代码
sudo nano /etc/systemd/resolved.conf

取消注释并修改:

bash 复制代码
[Resolve]
DNS=114.114.114.114 8.8.8.8

然后重启服务:

bash 复制代码
sudo systemctl restart systemd-resolved

这样应该能够解决因为DNS污染造成的连接网站超时,无法拉取下载源码的问题。如果还是无法改善,可以尝试更换网络或者等一会再尝试。

二、下载并编译 librealsense

1. 克隆仓库

bash 复制代码
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense

切换到稳定版标签(例如 v2.56.4,可根据需要或者选择最新):

bash 复制代码
git checkout v2.56.4

2. 准备 udev 规则

复制 udev 规则文件:

bash 复制代码
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

3. 配置并编译

bash 复制代码
mkdir build && cd build
bash 复制代码
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_EXAMPLES=true \
    -DBUILD_GRAPHICAL_EXAMPLES=true \
    -DBUILD_PYTHON_BINDINGS=false \
    -DFORCE_RSUSB_BACKEND=false \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_LIBCURL=OFF

说明 :FORCE_RSUSB_BACKEND=false 使用内核模块(推荐),true 则使用 USB 直通模式(无需内核模块)。树莓派内核通常已包含必要的 UVC 驱动,两种方式均可,但内核模块性能更好。


说明 :FORCE_PYTHON_BINDINGS=false 不使用关连python,true 则关连python。需要额外安装 libpython3-dev 和 pybind11。

bash 复制代码
sudo apt install python3-dev pybind11-dev
bash 复制代码
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_EXAMPLES=true \
    -DBUILD_GRAPHICAL_EXAMPLES=true \
    -DBUILD_PYTHON_BINDINGS=true \
    -DFORCE_RSUSB_BACKEND=false \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_LIBCURL=OFF

可以使用python编程调用深度相机。

4. 编译

bash 复制代码
make -j4

如果运行压力较大(内存不足),可以换为:

bash 复制代码
make -j2

5. 安装

编译成功后:

bash 复制代码
sudo make install

如果编译了内核模块,还需加载它:

bash 复制代码
sudo apt update
sudo apt install v4l2loopback-dkms

加载:

bash 复制代码
sudo modprobe v4l2loopback
sudo depmod -a

验证加载:

bash 复制代码
lsmod | grep v4l2loopback

如果看到类似输出,说明加载成功:

bash 复制代码
v4l2loopback           28672  0
videodev              237568  1 v4l2loopback

设置开机自动加载(可选):

bash 复制代码
echo "v4l2loopback" | sudo tee -a /etc/modules
echo "options v4l2loopback devices=2 video_nr=10,11" | sudo tee /etc/modprobe.d/v4l2loopback.conf

配置动态链接库:

bash 复制代码
sudo ldconfig

6. 验证安装

运行 realsense-viewer:

bash 复制代码
realsense-viewer

bash 复制代码
rs-enumerate-devices

三、常见问题与解决

(1) 编译失败提示 "CMAKE_CXX_COMPILER not found"

安装 build-essential

bash 复制代码
sudo apt install build-essential

(2)运行时找不到设备

检查 udev 规则是否生效:重新插拔相机。

查看设备权限:

bash 复制代码
ls -l /dev/bus/usb/*/*

确保当前用户在 plugdev 或 video 组:

bash 复制代码
sudo usermod -a -G plugdev $USER
sudo usermod -a -G video $USER

然后注销重新登录。

(3)编译内核模块时提示 "No rule to make target 'modules'"

说明您没有选择编译内核模块。可以忽略,直接使用 FORCE_RSUSB_BACKEND=ON 重新编译(不需要内核模块):

bash 复制代码
cd build
rm -rf *
cmake .. -DFORCE_RSUSB_BACKEND=true
make -j4
sudo make install
相关推荐
刘瑜澄2 小时前
[邪修方法]ubuntu 25 wayland窗口协议下使用utools
linux·运维·ubuntu·wayland·utools
奇树谦4 小时前
Ubuntu 24 常用截图工具一键安装脚本+自定义快捷键配置指南
linux·运维·ubuntu
biubiubiu07064 小时前
Ubuntu 22.04 中 cron 和 systemd timer 的区别与使用
linux·运维·ubuntu
逆向编程5 小时前
Ubuntu 虚拟机 Python3 + pip 完整安装教程
linux·ubuntu·pip
IAUTOMOBILE5 小时前
Ubuntu 22.04 下 NVIDIA H100 服务器完整部署攻略:驱动、Fabric Manager 与 Container Toolkit 配置
服务器·ubuntu·fabric
HelloTonyGo17 小时前
个人游戏笔记本免费“养龙虾”(四)OpenClaw(exec tools)的文件权限配置
ubuntu·exec·白名单·文件权限·用户权限·openclaw
Joker 0071 天前
Ubuntu上安装FreeSurfer的详细流程
linux·深度学习·ubuntu
2739920291 天前
Ubuntu 文件系统修复指南
linux·ubuntu·fsck
i建模1 天前
Ubuntu 中使用 LVM(逻辑卷管理)挂载磁盘
linux·运维·ubuntu