0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

别再迷糊了!Linux交叉编译到底是个啥?一文讲清楚

金鸽科技 来源:金鸽科技 作者:金鸽科技 2025-12-03 16:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很多工程师第一次听到“交叉编译”这4个字时,脑袋里往往会冒出两个字:抽象

明明写代码写得好好的,为啥还要搞一个“交叉”?编译不就是把源代码变成可执行程序吗,难道还会绕几个弯?

别急,今天我们就用不绕弯子、接地气、工程师能看懂的方式,把交叉编译讲得明明白白。

而且结合我们钡铼技术(BaileiTech)那些跑在 ARMRISC-V、国产嵌入式 Linux 的产品,告诉你交叉编译在工业场景里究竟为什么重要。

wKgZO2kv9MaAGoc2AAnNyfP8I3o444.png

一、交叉编译是什么?一句话讲清楚:在 A 机器上给 B 机器做软件

如果只准用一句话解释:

交叉编译 = 在一个平台上,为另一个平台生成可执行程序。

更白一点说:

你用的是x86 PC(Windows / Ubuntu)

产品里跑的是ARM / RISC-V / MIPS 的 Linux 系统

这两个架构 CPU 不一样,指令集不一样➜ 你本地编出来的程序肯定跑不了➜ 就得使用“交叉编译工具链”

所以:

✔ 在 PC 上编,给 ARM 设备跑✔ 在服务器上编,给微型控制器跑✔ 在国产化平台上编,给国产化 OS 跑

这,就是交叉编译的核心逻辑。

二、为什么嵌入式、工控行业离不开交叉编译?

在钡铼技术,我们做的绝大多数设备都跑嵌入式 Linux + ARM 或国产 CPU,比如:

ARMxy 系列边缘计算机

国产化飞腾 / 龙芯平台的定制软件

这些设备的 CPU 架构与 PC 不同,因此它们的软件几乎都依赖交叉编译。

为什么不直接在设备上编译?

原因很现实:

① 性能不够

嵌入式设备 CPU 性能弱,一编译就卡死。

② 存储不足

完整 GCC 环境、依赖包会占用上 GB 空间,你的工业设备没那么大空间给你折腾。

③ 效率太低

工程师要迭代几十次代码,不可能等嵌入式设备慢悠悠编译。

因此:

最快、最稳定、最专业的方式,就是在 PC 上交叉编译。

三、交叉编译的“幕后英雄”:交叉编译工具链

你可能见过这些名字:

arm-linux-gnueabihf-gcc

aarch64-linux-gnu-gcc

riscv64-linux-gnu-gcc

mipsel-linux-gcc

powerpc-linux-gcc

这些就是所谓的交叉编译工具链(cross toolchain)

它的本质是:

为目标平台准备的:

编译器(gcc)

链接器(ld)

汇编器(as)

标准 C 库(glibc / musl)

include 文件

目标架构的二进制支持

你在 PC 上敲的每一行代码,最终都通过这套工具链,被“翻译”成目标设备能理解的指令。

四、交叉编译到底在解决什么问题?举一个最典型的钡铼技术场景

假设你在为**BL335 边缘控制器(ARM Cortex-A 系列)**开发一个数据处理程序。

你的电脑是:

Windows 10 + WSL或

Ubuntu x86(Intel/AMD

如果你直接用 gcc 编译,会得到一个x86 程序

部署到 BL335 上必然报:

Exec format error

原因就是指令集不同。

你必须改用:

aarch64-linux-gnu-gcc

或者我们在 SDK 中提供的交叉工具链。

然后 PC 上生成一个.elf或.bin程序,上传到设备后就能正常运行。

这就是交叉编译在真实工程中的意义。

五、(重点)交叉编译为什么容易出问题?为什么工程师总是头大?

现实项目里大家最常吐槽交叉编译的地方主要有:

“库版本不一致”

编译时能链接设备里运行就提示:

undefinedsymbol

这是因为编译环境和目标设备的系统库不匹配。

钡铼技术的解决方法:→我们提供配套 SDK 和 sysroot避免用户自己配环境导致版本冲突。

“路径和依赖太复杂”

像 OpenSSL、FFmpeg、Modbus 库等,交叉编译都涉及一堆参数。

钡铼技术提供:→ 针对 ARMxy、BL 系列设备已经整理好的交叉编译说明→ 直接可用的 CMake Toolchain 文件工程师写一次就能一直复用。

“不同架构容易搞混”

ARM 有 armv7、armhf、arm64国产平台有 LoongArch、MIPS、RISC-V每个工具链名字像看天书。

六、交叉编译的未来趋势:更简单、更自动化、更国产化

过去十年,交叉编译属于“苦活”——写 Makefile、配置路径、处理依赖、打补丁……

但未来正在发生变化:

① CMake / Meson 让配置更干净

现代项目越来越容易做 cross build。

② Yocto / Buildroot 标准化整个构建体系

嵌入式系统的根文件系统 + 应用层都能自动构建。

③ 国产 CPU(龙芯 / 飞腾 / 申威 / RISC-V)需求爆发

交叉编译工具链已经是国产软件生态的基础设施。

钡铼技术也在大量项目中使用国产平台,并持续适配国产架构的交叉工具链,使得:

✔ 用户能快速在国产平台部署应用✔ 整体开发链路不再混乱✔ 工程效率明显提升

七、最后,让我们讲讲“钡铼技术的交叉编译经验”

我们在做 ARMxy 系列、BL 工控设备、IPM 模块、国产化平台时,总结出一套工程师非常喜欢的方法——

钡铼技术交叉编译“三件套”

完整交叉工具链(Toolchain)已验证可用,不会踩坑。

配套 sysroot保证编译环境与设备运行环境一致。

示例工程模板工程师复制即可开工。

你不需要思考“路径要怎么写”“库怎么找”“平台是不是对”等细节。

真正做到工程师最喜欢的四个字:

开箱即用。

七、最后,让我们讲讲“钡铼技术的交叉编译经验”

写代码的人都知道:

在 PC 上开发➡ 在 ARM / RISC-V / 国产 CPU 上运行

这件事从来不是“可选项”,而是“必选项”。

交叉编译真正的意义,就是:

让你的软件能高效、稳定、批量地跑在各种嵌入式设备上。

如果你正在基于钡铼技术的产品做二次开发、协议扩展、算法部署——你一定会和交叉编译天天见面。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11814

    浏览量

    219527
  • 交叉编译
    +关注

    关注

    0

    文章

    38

    浏览量

    13052
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux Kernel 6.1 tools目录全解析 | RK平台ARM64交叉编译实战指南

    、硬件测试等全场景能力。 本文完整拆解 Linux Kernel 6.1 tools 目录所有模块功能,并给出 RK 平台 ARM64 架构交叉编译的标准指令 ,站式解决内核工具使用
    的头像 发表于 04-16 18:42 6330次阅读
    <b class='flag-5'>Linux</b> Kernel 6.1 tools目录全解析 | RK平台ARM64<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>实战指南

    VOOHU——网络变压器Pin脚越多越厉害吗?

    刚接触网口设计的朋友都会疑惑:网络变压器有的8脚,有的十几、二十几个脚,Pin脚数量到底用?是不是越多性能越强?今天用通俗语言讲清楚,看完你也能快速选型。
    的头像 发表于 03-11 18:02 976次阅读

    ​VA和W怎么换算?功率因数怎么算?优比施电源讲清楚

    ​在选购UPS电源或任何电气设备时,很多人都会遇到困惑:设备铭牌上标注的VA和W到底是什么意思?它们之间有什么关系?为什么有的设备标500VA,有的标500W,两者却不相等?今天,优比施电源就从
    的头像 发表于 03-07 13:31 579次阅读
    ​VA和W怎么换算?功率因数怎么算?优比施电源<b class='flag-5'>一</b>次<b class='flag-5'>讲清楚</b>

    不间断电源是干什么用的?优比施讲透

    ……这些令人懊恼甚至带来损失的瞬间,都与一个词有关——电力中断。而不间断电源,正是为解决这些问题而生。今天,优比施电源用最通俗易懂的方式,为您讲清楚不间断电源到底是干什
    的头像 发表于 03-03 08:48 310次阅读
    不间断电源是干什么用的?优比施<b class='flag-5'>一</b><b class='flag-5'>文</b>讲透

    Linux设备树到底是张图看懂硬件适配的「翻译官」

    你有没有想过:同Linux 内核镜像,为啥能在不同型号的开发板上跑起来?比如块 ARM 架构的开发板,今天换个显示屏、明天加个传感器,内核不用重新编译就能识别新硬件 —— 这背
    的头像 发表于 02-09 17:01 1277次阅读
    <b class='flag-5'>Linux</b>设备树<b class='flag-5'>到底是</b><b class='flag-5'>啥</b>?<b class='flag-5'>一</b>张图看懂硬件适配的「翻译官」

    企业为什么开始换用 RFID智能硬盘柜?选型标准讲清楚

    在企业的数据资产管理体系中,硬盘直是非常特殊的类介质。它体积小、价值高、存储密度大,旦丢失或流转不规范,风险远高于纸质档案。本文结合业内广泛采用斯科两款机型——CK-GYP 和 CK-GYP1,把企业在选型时真正需要关注的
    的头像 发表于 12-10 09:38 354次阅读

    单模 vs 多模:光纤选择终极指南

    很多朋友在组建网络时都会遇到核心问题:我到底该用多模光纤还是单模光纤?今天,小易就为大家彻底讲清楚这两者的区别,帮助您做出最经济、高效的选择。
    的头像 发表于 12-08 14:12 1328次阅读
    单模 vs 多模:光纤选择终极指南

    别再装系统Linux 镜像到底是什么?篇讲到你怀疑人生

    多小、环境多复杂,如何快速安装、部署和维护 Linux 系统,都是开发者和运维人员必须掌握的核心技能。 这时,“Linux 镜像文件”就显得尤为重要。它就像份完整的系统快照,让你可以在不同设备之间快速迁移、复制,甚至批量部署。
    的头像 发表于 12-03 16:12 1017次阅读
    <b class='flag-5'>别再</b>装系统<b class='flag-5'>了</b>!<b class='flag-5'>Linux</b> 镜像<b class='flag-5'>到底是</b>什么?<b class='flag-5'>一</b>篇讲到你怀疑人生

    Linux交叉编译实战:跑起来你的第一个 STM32 程序

    很多开发者第次接触STM32,总会被“交叉编译”、“烧录程序”等概念绕晕。其实方法很简单:在Linux下配置交叉
    的头像 发表于 11-24 19:04 1051次阅读
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>实战:跑起来你的第<b class='flag-5'>一个</b> STM32 程序

    GPIO、PWM、ADC,到底怎么区分?

    在嵌入式开发中,我们经常听到GPIO、PWM、ADC这些术语。初学者常常搞不清楚它们的区别和用途:“它们不是都是和电平有关吗?为什么还要分这么多种?”今天,我们就把这些基础概念讲清楚,让你在动手开发
    的头像 发表于 11-14 10:28 1073次阅读
    GPIO、PWM、ADC,<b class='flag-5'>到底</b>怎么区分?

    学习Linux应该从哪里开始?

    交叉编译、网络栈、文件系统……到底从哪里开始学,才能既不绕弯路,又能学得“有感觉”? 今天, 深圳市钡铼技术有限公司 就来带你拆解这个问题。 、先理解:
    的头像 发表于 10-16 09:51 566次阅读
    学习<b class='flag-5'>Linux</b>应该从哪里开始?

    请问编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?

    编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?
    发表于 07-11 07:22

    不借助Linux系统,在Windows下如何搭建ZMC900E交叉编译环境

    嵌入式Linux系统,由于系统资源的匮乏,通常无法安装本地编译器进行本地开发,而需要在借助台主机进行交叉开发。般情况下,在主机安装相应的
    的头像 发表于 05-21 11:34 1072次阅读
    不借助<b class='flag-5'>Linux</b>系统,在Windows下如何搭建ZMC900E<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>环境

    讲清楚芯片的分类-多个维度

    芯片作为现代电子设备的核心组件,其分类方式多样,以下从功能、应用领域、制造工艺、集成度、设计架构、用途、数据类型、工作方式、材料及封装形式十维度进行详细阐述: 、按功能分类 1. 处理器芯片
    的头像 发表于 05-06 15:04 6970次阅读

    给你讲透!DA板卡到底是什么?它和主板又有哪些不同?

    大家好,我是老王,在电子行业干了十几年,今天我就用“大白话”给大家讲讲DA板卡到底是,它和咱们常说的“主板”有区别。文章里会穿插些表格和实际案例,保证你读完不仅能懂,还能跟朋友吹
    的头像 发表于 04-24 16:48 2963次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>给你讲透!DA板卡<b class='flag-5'>到底是</b>什么?它和主板又有哪些不同?