轻松学习yocto:20-SDK

发布时间:2026/8/12 17:30:03

轻松学习yocto:20-SDK
第10课很好你现在已经完成了 Yocto 学习中最重要的一段✅ Layer✅ Recipe✅ do_install✅ Image✅ RDEPENDS✅ kernel menuconfig✅ Device Tree✅ Kernel Module✅ Platform Driver下一步确实应该进入 第10课SDK(Application Development)。这是 Yocto 从系统开发过渡到应用开发的关键一步。第10课SDK——掌握应用开发目标只有一句话摘要本文是 Yocto 学习系列的第10课重点讲解 SDKSoftware Development Kit在嵌入式应用开发中的核心作用。主要内容包括1) 为什么需要 SDK——为应用工程师提供交叉编译环境使其能在 x86 主机上编译 ARM 目标板程序2) SDK 的组成——包含 ARM GCC/G/GDB、pkg-config、sysroot 以及目标镜像中所有包的头文件和库3) SDK 与 RootFS 的关系——SDK 自动包含镜像中已安装软件包如 openssl、curl的开发文件4) 生成、安装和使用 SDK 的完整步骤5) 通过 hello.c 示例演示交叉编译、验证和部署到树莓派的流程6) 区分 SDK 开发与 Recipe 集成的不同场景7) 提供结合 Raspberry Pi 2 环境的实践建议。最后文章还详细说明了如何为 Ubuntu 虚拟机配置双网卡NAT 桥接以实现主机与目标板的稳定网络连接完成应用部署与调试。不用整个 Yocto 编译也能给目标板开发程序。这就是 SDKSoftware Development Kit的意义。一、为什么需要 SDK假设以后有一个应用工程师。他只负责写main.c例如#includestdio.hintmain(void){printf(Hello Raspberry Pi!\n);return0;}他根本不想- bitbake - menuconfig - image - recipe - rootfs他只想 : gcc main.c但是, 他的电脑是 x86树莓派是 ARM普通 gcc 编出来的是 : ELF x86树莓派不能运行。所以需要 : ARM GCC例如 : arm-poky-linux-gnueabi-gccSDK 就提供这一整套交叉开发环境。二、SDK里面有什么安装 SDK 后你会得到ARM GCC ARM G ARM GDB pkg-config sysroot 头文件 库文件例如stdio.h pthread.h libpthread.so libm.so libc.so还有你的 Image 里面所有 package 的头文件例如opencv qt boost openssl如果 Image 有IMAGE_INSTALLopensslSDK 就有openssl headers三、SDK 与 RootFS 的关系假设你的 imagemyproduct-image里面有hello-driver openssl sqlitecurl生成 SDK 时bitbake myproduct-image-cpopulate_sdkSDK 自动知道我的 RootFS 有哪些库。于是SDK 里面也有curlheaders sqlite headers openssl headers所以应用程序#include curl/curl.h可以直接编译。四、生成 SDK最重要命令bitbake myproduct-image -c populate_sdklike build image, take a long time100GB space is not enough for adding sdk. expand to 150GBbitbake myproduct-image -c populate_sdkall succeeded.编译结束以后tmp/deploy/sdk/里面会出现tmp/deploy/sdk/poky-glibc-x86_64-myproduct-image-cortexa7t2hf-neon-vfpv4-raspberrypi2-toolchain-5.0.19.sh五、安装 SDK例如./tmp/deploy/sdk/poky-glibc-x86_64-myproduct-image-cortexa7t2hf-neon-vfpv4-raspberrypi2-toolchain-5.0.19.shEnter target directory for SDK (default: /opt/poky/5.0.19):里面就是完整 SDK。六、进入 SDK 环境每次开发前执行:source/opt/poky/5.0.19/environment-setup-cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi cxiccyocto:~/yocto/build-rpi2$echo$CCarm-poky-linux-gnueabi-gcc-mthumb-mfpuneon-vfpv4 -mfloat-abihard-mcpucortex-a7 -fstack-protector-strong-O2-D_FORTIFY_SOURCE2-Wformat-Wformat-security-Werrorformat-security-D_TIME_BITS64-D_FILE_OFFSET_BITS64--sysroot/opt/poky/5.0.19/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi cxiccyocto:~/yocto/build-rpi2$echo$SDKTARGETSYSROOT/opt/poky/5.0.19/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi cxiccyocto:~/yocto/build-rpi2$which${CC%%*}/opt/poky/5.0.19/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc七、编译第一个程序例如 : hello.c#includestdio.hintmain(void){printf(Hello SDK!\n);return0;}编译$CC hello.c -o hello不用写 : arm-poky-linux-gnueabi-gcc因为 CC 已经设置好了。八、验证程序查看 : file hello应该看到ELF32-bit LSB executable ARM EABI5不是 : x86-64说明交叉编译成功。九、拷到树莓派运行例如: scp hello root169.254.125.50:/root树莓派chmodx hello ./hello输出Hello SDK!整个流程完成。十、SDK 与 Recipe 的区别很多初学者会混淆两种开发方式通常开发流程是1.用 SDK 快速编写和调试应用。2.应用稳定后编写对应的 Recipe如 myapp.bb。3.将 Recipe 加入 IMAGE_INSTALL通过 BitBake 构建最终产品镜像。十一、建议的学习实验结合你当前已经搭建好的 Raspberry Pi 2 myproduct-image 环境我建议按下面顺序完成1.使用 bitbake myproduct-image-cpopulate_sdk 生成 SDK。2.安装 SDK并source环境脚本。3.编写一个 hello.c使用$CC编译。4.用filehello 验证生成的是 ARM 可执行文件。5.将程序复制到树莓派运行。6.再编写一个使用 pthread 或 math 库的小程序练习链接系统库。7.最后把这个程序制作成一个新的 Recipe加入 myproduct-image对比 SDK 开发 与 Yocto 集成开发 的完整流程。完成这一课后你就打通了 Yocto 的两条核心开发路线- 系统开发路线Layer → Recipe → Image → Kernel → Device Tree → Driver - 应用开发路线SDK → 交叉编译 → 调试 → Recipe 集成这也是许多企业中 BSP 工程师与应用工程师协作时最常见的工作模式。Ubuntu VM 配置 两块虚拟网卡建议给 Ubuntu VM 配置 两块虚拟网卡。怎么做这是企业里最常见的 Yocto 开发环境配置。我一步一步带你配置。当前目标配置 Ubuntu VMAdapter1NAT 上网 Adapter2Bridged Adapter 连接 Raspberry Pi最终效果第一步关闭 Ubuntu VM不要保存状态Save State而是Shutdown或者 Power Off第二步打开 VirtualBox 设置选择你的 Ubuntu 虚拟机Settings Network第三步修改 Adapter 1目前 Adapter 1 是Bridged Adapter Intel Wi-Fi改成Adapter1✓ Enable Network Adapter Attached to: NAT其它保持默认即可。第四步启用 Adapter 2点击Adapter2勾选✓ Enable Network Adapter设置Attached to: Bridged Adapter然后Name:这里不要选 Intel Wi-Fi。请选择Ethernet也就是 Windows ipconfig 中这一块Ethernet adapter Ethernet IPv4 Address169.254.125.127如果下拉框显示的是Realtek PCIe GbE Family Controller或者Intel Ethernet Connection或者USB Ethernet Adapter总之选择与你 Raspberry Pi 相连的那块有线网卡。第五步启动 Ubuntu启动 VM。执行ipaddr应该能看到enp0s3 inet10.0.2.15还有一块enp0s8如果 DHCP 没有地址也没关系。第六步给第二块网卡配置 Link-Local 地址因为 Raspberry Pi 是169.254.125.50Ubuntu 可以直接配置sudoipaddradd169.254.125.126/16 dev enp0s8sudoiplinksetenp0s8 up然后ping169.254.125.50应该就能通。第七步 网卡2设固定IP方法一推荐Netplan永久生效假设你的文件是/etc/netplan/01-network-manager-all.yaml编辑sudonano/etc/netplan/01-network-manager-all.yaml例如改成network: version:2renderer: NetworkManager ethernets: enp0s3: dhcp4:trueenp0s8: dhcp4:falseaddresses: -169.254.125.126/16保存后执行sudonetplan apply然后验证ipaddr show enp0s8应该自动出现inet169.254.125.126/16以后每次启动都会有。第八步SSH然后sshroot169.254.125.50成功以后scphello root169.254.125.50:/home/root就可以了。# ./helloHello SDK!

相关新闻

C++内存管理:delete与delete[]混淆引发的线上故障与底层原理剖析

C++内存管理:delete与delete[]混淆引发的线上故障与底层原理剖析

2026/8/12 17:30:03

1. 从一次线上故障说起:delete与delete[]的混淆之痛 去年,我们团队负责的一个核心数据处理服务,在版本更新后开始间歇性地出现内存泄漏和程序崩溃。崩溃的堆栈信息指向一个看似平平无奇的析构函数,但诡异的是,这个析构…

XHS-Downloader终极指南:三步掌握小红书无水印下载的完整解决方案

XHS-Downloader终极指南:三步掌握小红书无水印下载的完整解决方案

2026/8/12 17:20:03

XHS-Downloader终极指南:三步掌握小红书无水印下载的完整解决方案 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用…

Python中self.__class__的深度解析:从动态继承到工厂模式实战

Python中self.__class__的深度解析:从动态继承到工厂模式实战

2026/8/12 17:20:03

1. 项目概述:为什么我们需要深入理解 self.__class__ 在Python的面向对象编程世界里, self 和 __class__ 是两个高频出现的关键词。很多开发者对 self 耳熟能详,知道它代表当前实例对象,但对于 self.__class__ 的用法和…

链表与哈希表:数据结构核心原理与工程实践

链表与哈希表:数据结构核心原理与工程实践

2026/8/12 18:40:07

1. 数据结构入门:为什么链表和哈希表是核心基础 刚入行那会儿,我总以为数据结构就是些抽象概念,直到第一次面试被要求手写链表反转才意识到它的重要性。链表和哈希表作为数据结构中最基础也最实用的两种结构,几乎出现在所有技术岗…

基于YOLOv8+pyqt5的农作物识别检测系统1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于YOLOv8+pyqt5的农作物识别检测系统1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

2026/8/12 18:40:07

基于YOLOv8pyqt5的农作物识别检测系统1(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 内含CWC数据集 包含蓝草、藜、刺菜、玉米、莎草、棉花、茄属植物、番茄、天鹅绒、生菜、萝卜,11类农作物 也可自行替换模型,使用该…

Godot贪吃蛇开发:游戏循环、状态管理与性能优化实践

Godot贪吃蛇开发:游戏循环、状态管理与性能优化实践

2026/8/12 18:40:07

1. 项目概述与核心思路 最近在社区里看到不少朋友在用Godot引擎复刻经典游戏,其中“贪吃蛇”的出镜率相当高。这确实是个绝佳的练手项目,它麻雀虽小,五脏俱全,几乎涵盖了2D游戏开发的所有基础概念:场景管理、节点控制、…

Wi-Fi信道与频宽详解:从5GHz到6GHz,优化网络速度与稳定性的核心指南

Wi-Fi信道与频宽详解:从5GHz到6GHz,优化网络速度与稳定性的核心指南

2026/8/12 18:40:07

1. 项目概述:从“信道”与“频宽”出发,理解现代Wi-Fi的基石最近在折腾家里的网络,从老旧的Wi-Fi 5路由器升级到了支持Wi-Fi 6的设备,后来又眼馋Wi-Fi 7的宣传,发现了一个挺有意思但又容易让人迷糊的点:同样…

C++项目工程化实战:gflags配置管理与gtest单元测试框架详解

C++项目工程化实战:gflags配置管理与gtest单元测试框架详解

2026/8/12 18:40:07

1. 项目概述:为什么我们需要gflags和gtest?在C项目开发里,尤其是当你从写“玩具”代码转向构建一个正经的、需要维护和协作的项目时,两个问题会立刻变得尖锐起来:第一,如何优雅地管理那些运行时才确定的配置…

从单智能体到多智能体协作:AgentRun生产级架构解析与实践指南

从单智能体到多智能体协作:AgentRun生产级架构解析与实践指南

2026/8/12 18:30:06

1. 从“单兵”到“团队”:为什么我们需要多智能体协作?如果你和我一样,在过去几年里深度使用过各种AI智能体(Agent),大概率经历过这样一个阶段:兴奋地搭建起一个能自动写代码、查资料、做分析的…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/12 7:11:29

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/11 15:57:54

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

2026/8/12 9:39:37

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager 你是否曾经为《…

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

2026/8/12 9:39:37

如何用Charge Limiter延长MacBook电池寿命:终极保护指南 【免费下载链接】charge-limiter macOS app to set battery charge limit for Intel MacBooks 项目地址: https://gitcode.com/gh_mirrors/ch/charge-limiter 还在为MacBook电池健康度下降而烦恼吗&am…

推三返一模式5.0版本系统开发

推三返一模式5.0版本系统开发

2026/8/12 9:39:37

推三返一模式5.0版本系统开发要点编辑:araolin(私域邦网络土土哥)模式核心逻辑 推三返一是一种促销或分销机制,用户推荐三人完成特定行为(如购买、注册),推荐人可获得返利或奖励。5.0版本通常在…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…