零基础交叉编译实战:HelloWorld程序编译与板端运行
零基础交叉编译实战HelloWorld程序编译与板端运行作者黒漂技术佬适合人群刚配好交叉工具链的嵌入式新手关键词HelloWorld、交叉编译、开发板运行、文件传输引言理论看了一堆工具链也装了现在到了最激动人心的环节——亲自动手编译一个程序传到开发板上跑起来别小看这个 HelloWorld它打通了写代码→交叉编译→传输→运行的完整链路。走通这一遍你就算真正入了嵌入式的门。一、编写HelloWorld程序1.1 创建源文件在你的开发主机上创建一个工作目录写一个稍微有点料的 HelloWorld# 创建工作目录mkdir-p~/embedded_projects/hellocd~/embedded_projects/hello# 创建源文件vimhello.c1.2 源码内容不要只写一行printf加一点信息让程序在板端运行时更有参考价值#includestdio.h#includestring.h#includetime.hintmain(intargc,char*argv[]){printf(\n);printf( Hello Embedded World!\n);printf( 交叉编译测试程序\n);printf(\n);/* 打印参数信息 */if(argc1){printf(输入参数: );for(inti1;iargc;i){printf(%s ,argv[i]);}printf(\n);}/* 打印当前时间验证time库能正常工作 */time_tt;structtm*tm_info;time(t);tm_infolocaltime(t);printf(当前时间: %s,asctime(tm_info));/* 字符串操作验证string库 */charboard[]ARM Linux Board;printf(运行平台: %s (长度: %lu)\n,board,strlen(board));printf(\n);printf( 程序执行成功\n);printf(\n);return0;}这个程序涉及printf、时间获取、字符串操作能验证 C 标准库是否正常链接比单纯输出一句话更有诊断价值。二、交叉编译2.1 基本编译确保你的交叉工具链已经配置好上一篇的内容然后执行编译# 使用交叉编译器编译arm-linux-gnueabihf-gcc hello.c-ohello_arm# 如果没有配置环境变量需要写完整路径# /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-gcc hello.c -o hello_arm2.2 验证编译产物编译完成后先验证生成的可执行文件架构是否正确# 查看文件类型filehello_arm预期输出hello_arm: ELF 32-bit LSB executable, ARM, EABI5, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped关键信息解读字段含义说明ELF 32-bit32位可执行文件ARM 32位架构LSBLittle Endian小端字节序ARM目标架构ARM指令集EABI5嵌入式ABI版本5接口标准dynamically linked动态链接运行时需要C库interpreter /lib/ld-linux-armhf.so.3动态链接器路径目标板上必须有此文件2.3 静态编译备选方案如果你的开发板上没有对应的 C 库libc.so等动态链接的程序会运行失败。这时可以静态编译# 静态链接把C库打包进可执行文件arm-linux-gnueabihf-gcc hello.c-ohello_arm_static-static# 查看文件大小对比ls-lhhello_arm hello_arm_static输出对比-rwxr-xr-x 1 user user 6.4K hello_arm # 动态链接体积小 -rwxr-xr-x 1 user user 728K hello_arm_static # 静态链接体积大静态编译的文件大很多因为把整个C库塞进去了但好处是放到任何ARM板上都能跑不依赖目标板的库版本。2.4 开启调试信息后续可能需要用GDB调试编译时加上-g参数arm-linux-gnueabihf-gcc-ghello.c-ohello_arm_debug三、传输到开发板编译好的程序在PC上跑不了架构不同需要传到ARM开发板上。这里先用最通用的方式——通过U盘拷贝或网络传输。3.1 方式一U盘拷贝最简单# PC上拷贝到U盘cphello_arm /media/youruser/Udisk/# U盘插到开发板上自动挂载后# 在开发板终端执行cp/mnt/udisk/hello_arm ~/chmodx ~/hello_arm3.2 方式二串口传输无网络时适用如果开发板没有网络可以用rz/sz工具通过串口传输# 开发板上需要安装 lrzszopkginstalllrzsz# 或 apt install lrzsz# 开发板终端执行rz# 然后在串口工具如MobaXterm中选择文件发送3.3 方式三SCP网络传输最常用开发板和PC在同一网络中时用SCP最方便# 从PC传到开发板假设开发板IP为192.168.1.100scphello_arm root192.168.1.100:/root/# 开发板需已开启SSH服务SCP的详细配置和使用方法会在后续文章中专门讲解这里先用起来。四、板端运行验证4.1 SSH/串口连接开发板# 通过SSH连接开发板sshroot192.168.1.100# 或通过串口连接需用串口工具# MobaXterm / minicom / picocom 均可4.2 运行程序# 进入程序所在目录cd/root# 赋予执行权限如果还没有的话chmodx hello_arm# 运行./hello_arm4.3 预期输出 Hello Embedded World! 交叉编译测试程序 当前时间: Fri Jul 10 14:23:56 2026 运行平台: ARM Linux Board (长度: 15) 程序执行成功 看到这行输出恭喜你——交叉编译全链路打通了4.4 带参数运行./hello_arm arg1 arg2输出中会额外显示输入参数: arg1 arg2五、常见问题排查5.1 Permission denied# 报错./hello_arm: Permission denied# 原因文件没有执行权限# 解决chmodx hello_arm5.2 No such file or directory# 报错./hello_arm: No such file or directory# 原因文件确实存在但动态链接器找不到# 排查file./hello_arm# 查看interpreter路径ls/lib/ld-linux-armhf.so.3# 检查开发板上是否有此文件# 解决方案一安装缺失的库aptinstalllibc6# 或对应的包# 解决方案二使用静态编译版本./hello_arm_static5.3 cannot execute binary file# 报错./hello_arm: cannot execute binary file: Exec format error# 原因架构不匹配可能用了x86编译或ARM64编译的文件# 排查file./hello_arm# 如果显示 x86-64 而非 ARM说明用错了编译器# 解决用正确的交叉编译器重新编译问题速查表报错信息根本原因解决方案Permission denied无执行权限chmod xNo such file or directory缺动态链接器静态编译或安装C库cannot execute binary file架构不匹配用正确的交叉编译器Segmentation faultABI不兼容检查hf/非hf工具链总结从编写源码到交叉编译、传输、板端运行这四步构成了嵌入式开发的日常循环。HelloWorld虽然简单但它验证了整个工具链的正确性编译器能工作、C库能链接、传输通道畅通、开发板运行时库完整。动态编译体积小但依赖目标板库静态编译体积大但移植性强开发阶段常用动态编译方便调试。运行时遇到报错别慌用file命令查看文件信息是排查的第一步。这条链路跑通了后面编译复杂项目就是在此基础上叠加Makefile和依赖管理的事了。

相关新闻

Redis Stream消息队列:消费组、Pending列表与消息可靠性的工程实践

Redis Stream消息队列:消费组、Pending列表与消息可靠性的工程实践

Redis Stream消息队列:消费组、Pending列表与消息可靠性的工程实践「我们用 Redis 做消息队列」——这句话在三年前意味着「用 List 的 BLPOP 拉消息,丢了你别找我」。Redis 5.0 引入 Stream 之后,这句话的含义彻底变了。一、Stream 的数据结…

2026/7/24 7:29:03 阅读更多 →
AI服务依赖治理:模型供应商故障时的自动降级与静态规则切换

AI服务依赖治理:模型供应商故障时的自动降级与静态规则切换

AI服务依赖治理:模型供应商故障时的自动降级与静态规则切换2025 年某头部 AI 应用在 OpenAI 宕机的 4 小时内损失了 40% 的活跃用户——不是因为他们的产品不行,而是因为他们的系统没有「供应商故障自动切换」能力。对模型供应商的依赖治理,已…

2026/7/25 14:28:03 阅读更多 →
搞Agent最该学的东西,根本没人教...

搞Agent最该学的东西,根本没人教...

说个很邪门的事。 我在大厂做Agent开发快一年了,面过不少来应聘的兄弟。 简历上全写着"熟练LangChain"“精通RAG”“做过多Agent协作”。 一问落地细节——你的Agent在生产环境QPS能到多少?检索挂了怎么降级?改一个prompt之后怎么验…

2026/7/25 12:40:34 阅读更多 →

最新新闻

it only takes us a few minutes to drive to the mosque.

it only takes us a few minutes to drive to the mosque.

how long did it take you to read the whole book. we’re Jewish so we don’t celebrate Christmas John had been to that church year ago. before studying abroad in New York.Takuya had never made any Jewish or Muslim friends. he learned a lot of new.things fro…

2026/7/26 3:41:32 阅读更多 →
Trae AI编程助手:全栈智能代码生成与优化实践

Trae AI编程助手:全栈智能代码生成与优化实践

1. 项目概述Trae是一款基于大语言模型的AI编程助手,它正在彻底改变开发者编写代码的方式。作为一名使用过市面上几乎所有主流编程助手的全栈工程师,我可以负责任地说,Trae在代码补全质量、上下文理解能力和工程化支持方面都达到了新的高度。与…

2026/7/26 3:41:32 阅读更多 →
OpenClaw与AI结合实现智能网页自动化抓取

OpenClaw与AI结合实现智能网页自动化抓取

1. 项目背景与核心价值最近在测试OpenClaw这个自动化工具时,发现它结合AI处理浏览器操作的能力相当惊艳。不同于传统爬虫或RPA工具,这套方案能模拟人类操作逻辑处理动态网页内容。就拿生成每日AI早报这个需求来说,传统方案要么需要人工收集整…

2026/7/26 3:41:32 阅读更多 →
机器学习十大算法入门指南:从原理到实战应用场景解析

机器学习十大算法入门指南:从原理到实战应用场景解析

1. 先搞清楚机器学习到底解决什么问题,再看十大算法怎么选机器学习不是一堆算法的简单堆砌,而是用数据训练模型,让机器自动发现规律、做出预测或决策的方法。如果你刚入门,最该关心的不是哪个算法最厉害,而是每个算法最…

2026/7/26 3:41:32 阅读更多 →
Kimi K3大模型技术解析:长文本处理与多模态推理实战指南

Kimi K3大模型技术解析:长文本处理与多模态推理实战指南

在人工智能大模型快速迭代的今天,每一款新产品的发布都可能对现有市场格局带来冲击。近期,月之暗面公司推出的 Kimi K3 模型,以其在长文本处理、多模态理解和推理能力上的显著提升,引发了行业广泛关注。这款模型不仅技术指标亮眼&…

2026/7/26 3:41:32 阅读更多 →
基于YOLO的大棚黄瓜检测系统开发与实践

基于YOLO的大棚黄瓜检测系统开发与实践

1. 项目背景与核心价值在现代化农业生产中,黄瓜作为重要的经济作物,其生长状态的实时监测直接影响产量和品质。传统的人工巡检方式存在效率低、成本高、主观性强等问题。我们团队开发的这套基于深度学习的大棚黄瓜检测系统,正是为了解决这些痛…

2026/7/26 3:40:32 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻