Buildroot嵌入式Linux构建指南:从原理到RK平台CAN配置实战
1. 项目概述为什么我们需要Buildroot如果你正在为嵌入式设备构建一个Linux系统或者你厌倦了桌面发行版那动辄几十GB的臃肿体积想要一个完全由自己掌控、精简到极致的系统那么Buildroot就是你绕不开的工具。我第一次接触Buildroot是在一个工业控制器的项目上当时我们需要在一块只有256MB存储空间的ARM板卡上跑一个定制的Linux用于数据采集和协议转换。市面上现成的发行版哪怕是“最小化安装”也塞满了我们不需要的包和服务启动慢、占用大。而Buildroot就像它的名字一样允许你从一个纯净的“构建根”开始像搭积木一样只选择你需要的组件最终编译出一个完整的、可启动的根文件系统镜像。它不是一个发行版而是一个构建系统一个高度自动化的Makefile集合帮你处理了从交叉编译工具链、Linux内核、Bootloader到根文件系统中每一个软件包的下载、配置、编译和安装的繁琐过程。简单来说Buildroot解决的核心痛点是为资源受限的嵌入式或特定应用场景快速、可重复地构建一个高度定制化、精简且一致的Linux系统。它特别适合产品开发、工业控制、物联网网关、网络设备等对系统尺寸、启动速度和功能确定性要求极高的领域。与Ubuntu Base这类提供预编译二进制根文件系统的方案不同Buildroot是从源码开始构建一切这带来了无与伦比的灵活性和控制力当然也伴随着更复杂的配置过程。对于开发者而言掌握Buildroot意味着你不仅能“用”系统更能“造”系统对系统底层有更深刻的理解。2. Buildroot核心设计哲学与工作流拆解2.1 源码构建与高度集成的自动化流水线Buildroot的核心设计哲学是“一切从源码构建”。这意味着当你指定了目标架构比如ARM Cortex-A53和所需的软件包列表后Buildroot会首先为你构建或获取一个匹配的交叉编译工具链如gcc、binutils、glibc然后用这个工具链去编译Linux内核、Bootloader如U-Boot以及你选择的每一个用户态软件包从基础的busybox、到复杂的Qt、Python等。整个过程在一个隔离的构建环境中进行确保了构建结果的可重复性不受宿主机系统已安装库的影响。它的工作流可以概括为以下几个关键阶段配置阶段通过make menuconfig或make nconfig,make xconfig图形界面或直接修改.config文件定义目标系统的方方面面。这包括Target Architecture选择CPU架构ARM, x86_64, RISC-V等及具体变种。Toolchain选择工具链类型Buildroot自制、外部预编译、C库glibc, musl, uClibc-ng。System Configuration设置系统主机名、欢迎语、root密码、初始化系统默认是BusyBox init也支持systemd等。Kernel选择是使用Buildroot下载编译内核还是使用外部预编译的内核镜像。Target Packages这是核心部分像逛超市一样从数千个软件包中勾选你需要的。从基础的shell、编辑器、网络工具到数据库、多媒体框架、图形界面库。Filesystem images选择最终生成的镜像格式如ext2/3/4、squashfs、jffs2、ubi等以适应不同的存储介质eMMC, NAND Flash, SD卡。下载阶段根据配置Buildroot自动从预设的镜像站点下载所有选中的软件包源码、内核源码、工具链源码或预编译组件。它会校验哈希值以确保完整性。构建阶段这是最耗时的部分。Buildroot按照正确的依赖顺序依次构建工具链、内核、Bootloader和所有用户态软件包。每个软件包的构建都遵循./configure; make; make install的范式但被Buildroot的构建基础设施统一管理。镜像生成阶段所有软件构建安装到统一的output/target目录下形成一个完整的根文件系统雏形。然后Buildroot会执行你定义的“后构建脚本”进行最后的定制如添加特定文件、修改配置。最后根据配置将output/target目录打包成指定格式的镜像文件放在output/images/下。注意Buildroot的构建是“纯净”的。每次make clean会删除所有构建产物除下载的源码包外。make命令具有智能的依赖分析能力只重新构建受影响的部分这在迭代开发时能节省大量时间。2.2 与Ubuntu Base等二进制根文件系统的本质区别很多人会在项目初期纠结是选择Buildroot还是Ubuntu Base或Debian rootfs这其实是“自建厨房”和“定制化外卖”的区别。Buildroot自建厨房优点极致精简没有一丝冗余。系统里每一个字节的存在你都知道为什么。高度可控可以针对特定硬件进行深度优化如编译器参数。构建过程可完全离线、可重复适合产品化。通常启动速度更快。缺点初始配置复杂需要开发者对Linux系统组成有较好理解。软件包版本相对固定与Buildroot发布版本绑定升级单个包有时较麻烦。缺乏像apt这样的动态包管理系统系统构建后若要增删软件通常需要重新配置并完整构建一次虽然可通过Overlay或后期手动安装但非主流用法。Ubuntu Base/Debian rootfs定制化外卖优点开箱即用快速上手。拥有强大的APT包管理系统可以随时在线安装、更新、卸载软件生态丰富。社区支持强大遇到问题容易找到解决方案。缺点即使最小安装也包含大量为通用桌面或服务器设计的后台服务和依赖体积庞大。对存储和内存有限的嵌入式设备不友好。系统组成复杂裁剪难度高。软件版本更新可能导致不可预见的依赖问题对产品稳定性要求高的场景需要严格测试。选择原则如果你的设备资源非常紧张存储1GB内存512MB追求极致的启动速度和确定性并且软件栈相对固定那么Buildroot是首选。如果你的设备资源相对充裕需要频繁安装调试各种软件或者项目原型阶段需要快速验证功能那么Ubuntu Base可能更合适。对于像RK瑞芯微这类国产芯片平台官方SDK通常深度集成Buildroot提供了完整的BSP支持因此在RK平台上使用其SDK内的Buildroot往往是唯一或最佳选择这也是为什么“can的配置工具在rk的buildroot下怎么打开”会成为热门搜索词。3. 核心细节解析与实操要点3.1 Buildroot Overlay机制实现系统定制的利器Overlay覆盖是Buildroot中一个极其重要的高级特性。它允许你在不修改Buildroot源码或软件包定义的情况下向最终生成的根文件系统中添加、替换或删除文件。你可以把它理解为一个“补丁层”在构建的最后阶段覆盖到标准的根文件系统之上。Overlay的典型应用场景添加自定义文件放置你的应用程序二进制文件、配置文件如/etc/myapp.conf、启动脚本/etc/init.d/、静态网页等。修改系统默认配置替换BusyBox的默认配置、修改网络接口设置、更改SSH服务配置等。预置用户数据例如为产品预置序列号、许可证文件、默认壁纸等。如何使用Overlay 在make menuconfig中找到System configuration - Root filesystem overlay directories选项。在这里你可以指定一个或多个目录的路径。例如你可以在Buildroot项目根目录下创建一个名为board/mycompany/mydevice/overlay的目录然后在此目录中按照目标根文件系统的目录结构放置文件。my_buildroot_project/ ├── board/ │ └── mycompany/ │ └── mydevice/ │ ├── overlay/ │ │ ├── etc/ │ │ │ ├── network/ │ │ │ │ └── interfaces # 覆盖网络配置 │ │ │ └── myapp.conf # 添加自定义配置文件 │ │ └── usr/bin/ │ │ └── my_app # 添加自定义应用程序 │ └── post-build.sh # 后构建脚本另一种定制方式 ├── .config └── output/构建时overlay/目录下的所有内容会被原样复制到output/target/中同名文件会被覆盖。这是实现设备差异化定制的标准做法。3.2 配置工具与内核配置的深度管理Buildroot提供了多种配置接口最常用的是基于ncurses的make menuconfig它直观且不需要图形界面。对于内核配置Buildroot提供了两种主要方式使用Buildroot管理的内核配置在Kernel - Kernel configuration中选择Using a custom (def)config file。你可以将自己准备好的内核.config文件例如从芯片原厂SDK中获得放置在指定路径如board/mycompany/mydevice/linux.config并在该选项中指定路径。Buildroot会在构建内核时使用这个配置。交互式修改内核配置执行make linux-menuconfig。这个命令会调用Linux内核自己的配置菜单允许你基于当前配置进行交互式修改。修改保存后新的配置会保存在output/build/linux-*/目录下。但是请注意这些修改默认不会自动保存回你原始的配置文件中。为了持久化修改你需要手动将output/build/linux-*/.config复制回你自定义的配置文件中或者使用make linux-update-defconfig命令它会将当前内核配置保存为defconfig格式仅包含与默认配置不同的选项到board/mycompany/mydevice/目录下方便后续使用。关于“can的配置工具在rk的buildroot下怎么打开” 这个问题非常具体。CANController Area Network是车载和工业领域常用的总线。在Linux中CAN支持是内核的一部分并通过SocketCAN子系统提供用户空间接口。内核配置首先你必须确保Linux内核启用了CAN支持。在RK的Buildroot环境中你需要运行make linux-menuconfig然后导航到Networking support - CAN bus subsystem support。在这里你需要启用CAN bus subsystem support并根据你的RK芯片具体型号选择正确的CAN控制器驱动例如Microchip CAN BUS Analyzer Tool是USB工具而RK芯片内置的CAN控制器可能是Rockchip CAN support具体名称需查阅内核源码。同时启用CAN_RAW、CAN_BCM协议以及CAN_GW网关等你需要的功能。用户空间工具内核驱动提供了设备节点如can0但配置和诊断需要用户空间工具。Buildroot的包目录里提供了can-utils这个包。在make menuconfig中前往Target packages - Hardware handling - can-utils将其选中。这样构建后的系统就会包含candump,cansend,canconfig旧版等命令行工具。现在更推荐使用ip命令来配置CAN接口ip link set can0 up type can bitrate 500000并用candump can0来监听数据。3.3 裁剪与快速启动优化实战“裁剪Buildroot快速启动”是嵌入式开发永恒的追求。启动时间优化是一个系统工程涉及Bootloader、内核、根文件系统、初始化进程和应用启动多个层面。以下是在Buildroot层面可操作的关键点选择更小的C库在Toolchain配置中将C库从默认的glibc切换为musl或uClibc-ng。musl尤其以轻量、快速和安全著称能显著减少根文件系统体积和内存占用。但需注意某些软件特别是闭源或对glibc有强依赖的可能不兼容。精心挑选Target Packages使用make menuconfig中的搜索功能按/键查找并剔除不需要的包。一个常见技巧是先做一个包含所有可能需要的包的配置构建并检查output/target的大小然后利用make graph-size生成依赖图和大小图表找出“体积大户”进行针对性裁剪。对于命令行工具优先使用BusyBox提供的精简版本在Target packages - BusyBox中配置它用一个二进制文件实现了上百个常用命令。禁用调试符号在Build options - build packages with debugging symbols中选择No。这会大幅减小二进制文件体积。优化根文件系统在Filesystem images中选择只读的squashfs或jffs2针对Flash它们通常具有较好的压缩比。对于需要可写的部分可以结合overlayfs或划分单独的可写分区。启用Filesystem images - exact size选项为镜像设置固定大小避免首次启动时的文件系统扩展操作。在System configuration - /dev management中选择Static using device table而非Dynamic using devtmpfs可以减少启动时创建设备节点的开销但灵活性降低。优化初始化系统Buildroot默认使用BusyBox init它比systemd轻量得多。在System configuration - Init system中确保选择BusyBox。精简/etc/inittab和/etc/init.d/中的启动脚本移除所有不必要的服务。将串口登录改为非必须或延迟启动。使用System configuration - Run a getty (login prompt) after boot来延迟登录提示的启动让系统服务先启动完毕。内核裁剪运行make linux-menuconfig进行激进的内核裁剪。移除所有不需要的驱动、文件系统支持、网络协议、调试功能。使用内核的make tinyconfig作为起点是一个好方法但需要仔细添加回硬件必需的驱动。4. 完整构建流程实操与问题排查4.1 从零开始构建一个ARM系统镜像假设我们要为一块通用的ARMv7开发板比如BeagleBone Black构建一个最小系统。获取Buildrootwget https://buildroot.org/downloads/buildroot-2024.02.tar.xz tar xf buildroot-2024.02.tar.xz cd buildroot-2024.02初始配置 Buildroot为许多开发板提供了预置配置defconfig。我们可以选择一个作为起点。make list-defconfigs | grep beaglebone # 查找相关配置 make beaglebone_defconfig # 加载BeagleBone Black的默认配置如果没有特定板子的配置可以从基础配置开始make qemu_arm_vexpress_defconfig然后进入菜单配置修改。定制化配置make menuconfigTarget options确认架构为ARM (little endian)正确设置Target Variant如cortex-A8。Toolchain选择Buildroot toolchainC库用glibc兼容性好或musl追求体积。System configuration设置主机名、root密码或设置无密码初始化系统选BusyBox。Kernel选择Using a defconfig并指定为multi_v7_defconfig适用于多数ARMv7板卡。你也可以在这里设置内核版本。Target packages这是关键。对于最小系统你可以只选择BusyBox默认已选进去可以进一步裁剪命令在Libraries - Networking下可能需要libelf某些工具依赖。在Networking applications下选择dropbear轻量级SSH服务器以便远程登录。取消选择所有图形库、音频视频等无关包。Filesystem images选择ext2/3/4 root filesystem并勾选exact size设置为256M。同时可以选择tar the root filesystem以便其他用途。开始构建make这个过程会持续较长时间从几十分钟到数小时取决于网络速度和CPU性能。它会自动下载所有源码并编译。获取结果 构建完成后所有镜像文件位于output/images/zImage压缩的内核镜像。*.dtb设备树二进制文件如果使用了设备树。rootfs.ext2/4根文件系统镜像。可能还有u-boot.img等Bootloader镜像。部署与测试 将zImage、对应的.dtb文件和rootfs.ext4写入SD卡或板载存储的相应分区配置Bootloader加载即可启动。4.2 常见问题与排查技巧实录在多年使用Buildroot的过程中我踩过不少坑这里总结几个最常见的问题和解决方法。问题1构建失败提示“下载失败”或“哈希校验失败”原因网络问题或Buildroot资源镜像站点的特定包链接失效、更新导致哈希值不匹配。排查检查网络连接特别是对于需要从GitHub、GitLab等站点克隆的包。查看output/build/目录下对应软件包目录中的.mk文件找到SITE和源码包名称。尝试手动在浏览器中访问下载链接。哈希校验失败通常是因为上游发布了新版本但Buildroot的包定义还未更新。可以临时在.mk文件中注释掉HASH_FILES相关的行但这不是长久之计。解决对于网络问题可以配置国内镜像源。编辑~/.wgetrc或/etc/wgetrc或直接修改Buildroot的package/pkg-download.mk文件指向阿里云、清华等镜像站。对于哈希失败可以尝试在make menuconfig中切换到该软件包的另一个版本如果有。或者前往Buildroot邮件列表或GitHub仓库查看是否有相关修复补丁手动应用。问题2系统启动后找不到某个命令或库原因该命令对应的软件包没有被选中编译或者其动态链接库缺失。排查在目标板上使用which command_name查找命令。使用ldd /path/to/binary检查二进制文件的库依赖。在Buildroot配置中使用/搜索功能查找提供该命令或库的包名。解决在make menuconfig中启用对应的软件包然后重新make。Buildroot会智能地只重新构建该包及其依赖。如果库是其他包的依赖确保那个包已被选中。有时库本身作为一个独立包存在如libcurl需要单独选中。问题3内核启动后卡住无法挂载根文件系统原因内核缺少必要的文件系统驱动、存储控制器驱动或者内核命令行参数bootargs中的根设备指定错误。排查查看串口启动日志关注内核打印的最后几行信息通常会有“VFS: Unable to mount root fs”或类似错误。检查内核配置确保编译进了对应的文件系统驱动如CONFIG_EXT4_FSy和块设备/MMC/SD驱动。检查Bootloader传递给内核的bootargs确认root参数指向正确的设备如root/dev/mmcblk0p2并且文件系统类型正确rootfstypeext4。解决运行make linux-menuconfig确保相关驱动已编译进内核y而不是模块m因为初始根文件系统挂载时无法加载模块。在Buildroot的Kernel - Kernel command line中正确设置默认的内核参数或在Bootloader中手动设置。问题4如何添加一个Buildroot官方未收录的第三方软件包这是进阶需求。你需要为这个软件包创建一个Buildroot的包定义文件。在package/目录下创建一个新目录例如myapp/。在该目录中创建两个关键文件Config.in用于在menuconfig中显示配置选项的脚本。myapp.mk定义如何下载、配置、编译和安装这个包的Makefile片段。Config.in示例config BR2_PACKAGE_MYAPP bool myapp help This is my custom application.myapp.mk示例MYAPP_VERSION 1.0 MYAPP_SITE https://github.com/username/myapp/releases/download MYAPP_SOURCE myapp-$(MYAPP_VERSION).tar.gz MYAPP_LICENSE GPL-3.0 MYAPP_LICENSE_FILES COPYING define MYAPP_BUILD_CMDS $(MAKE) CC$(TARGET_CC) LD$(TARGET_LD) -C $(D) endef define MYAPP_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(D)/myapp $(TARGET_DIR)/usr/bin/myapp endef $(eval $(generic-package))最后在package/Config.in文件中添加一行source package/myapp/Config.in使其出现在配置菜单中。这个过程需要对Makefile和软件构建流程有一定了解但它是将任意软件集成进Buildroot构建系统的标准方法是实现深度定制的终极手段。

相关新闻

.NET AI对话平台集成ElBruno.MempalaceNet实现长期记忆系统实践

.NET AI对话平台集成ElBruno.MempalaceNet实现长期记忆系统实践

1. 项目缘起:当AI对话平台需要“记忆”最近在折腾一个叫 openclaw.net 的AI对话平台项目。这玩意儿本质上是一个基于.NET技术栈构建的Web应用,核心功能是提供一个界面,让用户能与后端的大语言模型(比如GPT、Claude或者一些开源模型…

2026/8/5 5:04:08 阅读更多 →
【面壁智能ForgeStencil技术解析】双Agent如何打通Stencil自动研究与真实应用部署

【面壁智能ForgeStencil技术解析】双Agent如何打通Stencil自动研究与真实应用部署

文章目录面壁智能ForgeStencil技术解析:双Agent如何打通Stencil自动研究与真实应用部署一、引言二、Stencil是什么:为什么它既规则又难优化2.1 从一个网格点看科学计算2.2 旧自动化为什么停在代码生成三、双Agent架构:一个研究算子&#xff0…

2026/8/5 5:04:08 阅读更多 →
计算机毕业设计之基于Spring Boot的在线购物助手

计算机毕业设计之基于Spring Boot的在线购物助手

随着电子商务的蓬勃发展和消费者购物需求的不断提升,构建一个高效、安全、易用的在线购物平台变得尤为重要。基于Java语言的在线购物助手,采用Spring Boot框架与Vue框架结合,以MySQL数据库为后端支撑,构建了B/S(Browse…

2026/8/5 5:04:08 阅读更多 →

最新新闻

Excel数据去重全攻略:从条件格式到Power Query的实战技巧

Excel数据去重全攻略:从条件格式到Power Query的实战技巧

1. 从“查找相同值”到“数据清洗”的本质跨越在数据处理的日常里,我们常常会遇到一个看似简单却频繁出现的问题:面对一列数据,如何快速找出那些重复出现的值,并决定是“一删了之”还是“留其位而清其值”?这不仅仅是E…

2026/8/5 5:36:24 阅读更多 →
OpenClaw开源智能体框架:从AI聊天到自主执行的范式跃迁

OpenClaw开源智能体框架:从AI聊天到自主执行的范式跃迁

1. 项目概述:从“聊天”到“做事”的AI范式跃迁最近在AI圈里,一个名为OpenClaw的项目热度持续攀升,它频繁地与“AI智能体”、“自主行动力”这些词绑定出现。如果你还在用大模型仅限于聊天、问答或者生成一些文本图片,那OpenClaw所…

2026/8/5 5:36:24 阅读更多 →
eNSP安装全攻略:从零到精通,解决启动失败40与Win11兼容性问题

eNSP安装全攻略:从零到精通,解决启动失败40与Win11兼容性问题

1. 从“启动失败40”到“丝滑运行”:我为什么重写这篇eNSP安装指南 如果你正在搜索“eNSP安装”,大概率已经踩过坑了。无论是“启动设备AR1失败40”,还是“FW防火墙一直#”,又或者是Win11系统下各种诡异的兼容性问题,这…

2026/8/5 5:36:24 阅读更多 →
Nginx超长请求串处理:从414错误到缓冲区配置实战

Nginx超长请求串处理:从414错误到缓冲区配置实战

1. 项目概述:当请求串“太长”时会发生什么?在Web开发和运维的日常里,处理HTTP请求是再基础不过的操作。但你是否遇到过这样的场景:一个看似正常的API调用,或者一个包含复杂查询参数的页面请求,在Nginx代理…

2026/8/5 5:36:24 阅读更多 →
CTF流量分析实战:从HTTP协议到Webshell解码全流程解析

CTF流量分析实战:从HTTP协议到Webshell解码全流程解析

1. 项目概述:一次典型的CTF流量分析实战复盘最近在复盘安恒八月月赛的一道流量分析题,这道题可以说是CTF比赛中Misc(杂项)类别里非常经典的一个缩影。它不像Web题那样有直接的交互界面,也不像Pwn题那样需要构造精妙的漏…

2026/8/5 5:36:24 阅读更多 →
魔兽世界DKT莱登99分攻略:攻防一体的资源管理与输出循环

魔兽世界DKT莱登99分攻略:攻防一体的资源管理与输出循环

1. 这篇文章真正要解决的问题如果你是一名《魔兽世界》的坦克玩家,尤其是死亡骑士,那么你一定对“如何在高强度团本中打出亮眼数据”这个终极问题感到既兴奋又焦虑。在雷电王座这个经典副本中,面对莱登这样的史诗级首领,DKT&#…

2026/8/5 5:35:24 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →