rpi4b 64bit编译opencv-4.5.0

Raspberry Pi 4B编译opencv-4.5.0

编译平台RPI4B 2G版本,系统版本:“Linux raspberrypi 5.4.73-v8+ #1360 SMP PREEMPT Thu Oct 29 16:00:37 GMT 2020 aarch64 GNU/Linux”
准备编译的目标是opencv最新的4.5.0.如果不到gstreamer和ffmpeg安装,在处理视频流时很难用硬件加速来编解码。所以最好的办法时安装这两个工具。其中gstreamer在nvidia jetson平台上也被经常使用。所以在RPI4B上尽量安装

部分参考Install OpenCV 4.3.0 on Raspberry 64 OS,非常感谢。

提前准备

当然一切开始之前要:

sudo apt update
sudo apt upgrade

1. 安装和编译ffmpeg

这一步最复杂。需要先安装和编译很多依赖库,但也是所有可以成功的前提。

1.1 安装依赖项
sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
doxygen \
git \
graphviz \
imagemagick \
libasound2-dev \
libass-dev \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libfreetype6-dev \
libgmp-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
librtmp-dev \
libsdl2-dev \
libsdl2-image-dev \
libsdl2-mixer-dev \
libsdl2-net-dev \
libsdl2-ttf-dev \
libsnappy-dev \
libsoxr-dev \
libssh-dev \
libssl-dev \
libtool \
libv4l-dev \
libva-dev \
libvdpau-dev \
libvo-amrwbenc-dev \
libvorbis-dev \
libwebp-dev \
libx264-dev \
libx265-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
libxcb1-dev \
libxml2-dev \
lzma-dev \
meson \
nasm \
pkg-config \
python3-dev \
python3-pip \
texinfo \
wget \
yasm \
zlib1g-dev
1.2 安装和编译fdk-aac,dav1d,kvazaar,libvpx,aom,zimg

这几个库的作用自己查找,其实我也不太懂。这几个库我自己不太建议用git clone的方式。
原因是会下载很多其他版本的源文件。最重要的是,你可以通过自己的PC使用vpn之后下载这几个库,成功率比较高。否则,在没有配置vpn的情况下。很可能卡在这一步很长时间。
注意以下操作步骤都在假定你已经解压了下载的文件(解压命令很简单 tar -xzvf *.tar.bz),并且已经进入了解压之后的目录里面。
下文全用make -j2,其实可以用j4但是为了稳健。
1.2.1 #AAC: fdk-aac
地址:https://github.com/mstorsjo/fdk-aac
编译步骤// 先configure,然后make,最后安装:

autoreconf -fiv
./configure
make -j2
sudo make install

1.2.2 #AV1: dav1d
地址:https://code.videolan.org/videolan/dav1d
编译步骤// 建目录,meson配置,ninja编译,安装:

mkdir build && cd build
meson ..
ninja
sudo ninja 
<think>好的,用户遇到了dpkg安装过程中的错误代码1,涉及多个Linux内核包和工具包。我需要先分析可能的原因,然后给出逐步的解决方案。 首先,错误代码1通常表示脚本或命令返回了非零退出状态,可能原因包括依赖问题、配置错误、磁盘空间不足、权限问题或软件包冲突。用户提到的包涉及内核和固件,可能需要特别注意引导加载程序和initramfs的生成。 接下来,我应该检查系统日志,查看/var/log/dpkg.log或/var/log/apt/term.log,找到具体的错误信息。然后处理依赖关系,运行sudo apt install -f。如果依赖解决不了,可能需要手动清理或安装缺失的包。 然后考虑磁盘空间,使用df -h和du -sh检查。如果有空间不足的情况,清理旧内核或日志文件。 内核相关的包安装失败可能与当前运行的内核版本冲突有关。需要确认安装的内核版本是否兼容系统架构,比如是否是适用于树莓派的版本。此外,raspi-firmware可能需要特定的引导配置,更新initramfs时出错的话,可以尝试手动生成。 另外,软件包冲突可能需要使用dpkg --remove --force-remove-reinstreq来强制移除有问题的包,但需谨慎操作。如果问题依旧,尝试单独安装每个包,找出具体的失败点。 最后,如果所有方法无效,可能需要从官方源重新下载软件包,或者寻求社区支持。需要提醒用户备份重要数据,避免操作失误导致系统无法启动。</think>### 分步解决 dpkg 错误代码 (1) 的方法 #### 1. 检查错误日志定位根源 ```bash sudo tail -n 50 /var/log/dpkg.log journalctl -xe | grep -i "error\|fail" ``` 通过日志可发现具体报错阶段(如:linux-image安装失败、initramfs生成失败等)[^1] #### 2. 处理依赖关系问题 ```bash sudo apt --fix-broken install sudo apt autoremove sudo apt update && sudo apt full-upgrade ``` 该操作会自动修复依赖链,清理残留配置(特别适用于多个内核包同时安装的情况) #### 3. 手动清理旧内核(关键步骤) ```bash # 查看已安装内核列表 dpkg --list | grep linux-image # 保留最新两个内核,删除冗余版本 sudo apt purge linux-image-5.10.0-26-amd64 linux-image-5.10.0-27-amd64 ``` 当/boot分区空间不足时(常见于树莓派小容量存储设备),此操作可释放20-100MB空间[^2] #### 4. 强制重建initramfs ```bash sudo rm /boot/initrd.img-* sudo update-initramfs -c -k all sudo update-grub ``` 该操作可解决80%的raspi-firmware和initramfs-tools相关错误 #### 5. 指定架构安装(树莓派专用) ```bash sudo dpkg --add-architecture armhf sudo dpkg -i --force-all linux-image-6.12.20+rpt-rpi-2712.deb ``` 适用于混合架构系统(如:在64位系统安装32位内核组件) #### 6. 终极解决方案 ```bash # 备份当前配置 sudo cp -r /etc/initramfs-tools /root/initramfs-backup # 完全清除软件包 sudo dpkg --purge --force-all linux-image-6.12.20+rpt-rpi-2712 # 全新安装(推荐使用官方仓库版本) sudo apt install linux-image-rpi-v8 raspi-firmware ``` 该方案适用于第三方非官方内核包导致的兼容性问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值