91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

別再迷糊了!Linux交叉編譯到底是個(gè)啥?一文講清楚

金鴿科技 ? 來(lái)源:金鴿科技 ? 作者:金鴿科技 ? 2025-12-03 16:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多工程師第一次聽(tīng)到“交叉編譯”這4個(gè)字時(shí),腦袋里往往會(huì)冒出兩個(gè)字:抽象。

明明寫代碼寫得好好的,為啥還要搞一個(gè)“交叉”?編譯不就是把源代碼變成可執(zhí)行程序嗎,難道還會(huì)繞幾個(gè)彎?

別急,今天我們就用不繞彎子、接地氣、工程師能看懂的方式,把交叉編譯講得明明白白。

而且結(jié)合我們鋇錸技術(shù)(BaileiTech)那些跑在 ARM、RISC-V、國(guó)產(chǎn)嵌入式 Linux 的產(chǎn)品,告訴你交叉編譯在工業(yè)場(chǎng)景里究竟為什么重要。

wKgZO2kv9MaAGoc2AAnNyfP8I3o444.png

一、交叉編譯是什么?一句話講清楚:在 A 機(jī)器上給 B 機(jī)器做軟件

如果只準(zhǔn)用一句話解釋:

交叉編譯 = 在一個(gè)平臺(tái)上,為另一個(gè)平臺(tái)生成可執(zhí)行程序。

更白一點(diǎn)說(shuō):

你用的是x86 PC(Windows / Ubuntu)

產(chǎn)品里跑的是ARM / RISC-V / MIPS 的 Linux 系統(tǒng)

這兩個(gè)架構(gòu) CPU 不一樣,指令集不一樣? 你本地編出來(lái)的程序肯定跑不了? 就得使用“交叉編譯工具鏈”

所以:

? 在 PC 上編,給 ARM 設(shè)備跑? 在服務(wù)器上編,給微型控制器跑? 在國(guó)產(chǎn)化平臺(tái)上編,給國(guó)產(chǎn)化 OS 跑

這,就是交叉編譯的核心邏輯。

二、為什么嵌入式、工控行業(yè)離不開(kāi)交叉編譯?

在鋇錸技術(shù),我們做的絕大多數(shù)設(shè)備都跑嵌入式 Linux + ARM 或國(guó)產(chǎn) CPU,比如:

ARMxy 系列邊緣計(jì)算機(jī)

國(guó)產(chǎn)化飛騰 / 龍芯平臺(tái)的定制軟件

這些設(shè)備的 CPU 架構(gòu)與 PC 不同,因此它們的軟件幾乎都依賴交叉編譯。

為什么不直接在設(shè)備上編譯?

原因很現(xiàn)實(shí):

① 性能不夠

嵌入式設(shè)備 CPU 性能弱,一編譯就卡死。

② 存儲(chǔ)不足

完整 GCC 環(huán)境、依賴包會(huì)占用上 GB 空間,你的工業(yè)設(shè)備沒(méi)那么大空間給你折騰。

③ 效率太低

工程師要迭代幾十次代碼,不可能等嵌入式設(shè)備慢悠悠編譯。

因此:

最快、最穩(wěn)定、最專業(yè)的方式,就是在 PC 上交叉編譯。

三、交叉編譯的“幕后英雄”:交叉編譯工具鏈

你可能見(jiàn)過(guò)這些名字:

arm-linux-gnueabihf-gcc

aarch64-linux-gnu-gcc

riscv64-linux-gnu-gcc

mipsel-linux-gcc

powerpc-linux-gcc

這些就是所謂的交叉編譯工具鏈(cross toolchain)。

它的本質(zhì)是:

為目標(biāo)平臺(tái)準(zhǔn)備的:

編譯器(gcc)

鏈接器(ld)

匯編器(as)

標(biāo)準(zhǔn) C 庫(kù)(glibc / musl)

include 文件

目標(biāo)架構(gòu)的二進(jìn)制支持

你在 PC 上敲的每一行代碼,最終都通過(guò)這套工具鏈,被“翻譯”成目標(biāo)設(shè)備能理解的指令。

四、交叉編譯到底在解決什么問(wèn)題?舉一個(gè)最典型的鋇錸技術(shù)場(chǎng)景

假設(shè)你在為**BL335 邊緣控制器(ARM Cortex-A 系列)**開(kāi)發(fā)一個(gè)數(shù)據(jù)處理程序。

你的電腦是:

Windows 10 + WSL或

Ubuntu x86(Intel/AMD

如果你直接用 gcc 編譯,會(huì)得到一個(gè)x86 程序

部署到 BL335 上必然報(bào):

Exec format error

原因就是指令集不同。

你必須改用:

aarch64-linux-gnu-gcc

或者我們?cè)?SDK 中提供的交叉工具鏈。

然后 PC 上生成一個(gè).elf或.bin程序,上傳到設(shè)備后就能正常運(yùn)行。

這就是交叉編譯在真實(shí)工程中的意義。

五、(重點(diǎn))交叉編譯為什么容易出問(wèn)題?為什么工程師總是頭大?

現(xiàn)實(shí)項(xiàng)目里大家最常吐槽交叉編譯的地方主要有:

“庫(kù)版本不一致”

編譯時(shí)能鏈接設(shè)備里運(yùn)行就提示:

undefinedsymbol

這是因?yàn)榫幾g環(huán)境和目標(biāo)設(shè)備的系統(tǒng)庫(kù)不匹配。

鋇錸技術(shù)的解決方法:→我們提供配套 SDK 和 sysroot避免用戶自己配環(huán)境導(dǎo)致版本沖突。

“路徑和依賴太復(fù)雜”

像 OpenSSL、FFmpeg、Modbus 庫(kù)等,交叉編譯都涉及一堆參數(shù)。

鋇錸技術(shù)提供:→ 針對(duì) ARMxy、BL 系列設(shè)備已經(jīng)整理好的交叉編譯說(shuō)明→ 直接可用的 CMake Toolchain 文件工程師寫一次就能一直復(fù)用。

“不同架構(gòu)容易搞混”

ARM 有 armv7、armhf、arm64國(guó)產(chǎn)平臺(tái)有 LoongArch、MIPS、RISC-V每個(gè)工具鏈名字像看天書。

六、交叉編譯的未來(lái)趨勢(shì):更簡(jiǎn)單、更自動(dòng)化、更國(guó)產(chǎn)化

過(guò)去十年,交叉編譯屬于“苦活”——寫 Makefile、配置路徑、處理依賴、打補(bǔ)丁……

但未來(lái)正在發(fā)生變化:

① CMake / Meson 讓配置更干凈

現(xiàn)代項(xiàng)目越來(lái)越容易做 cross build。

② Yocto / Buildroot 標(biāo)準(zhǔn)化整個(gè)構(gòu)建體系

嵌入式系統(tǒng)的根文件系統(tǒng) + 應(yīng)用層都能自動(dòng)構(gòu)建。

③ 國(guó)產(chǎn) CPU(龍芯 / 飛騰 / 申威 / RISC-V)需求爆發(fā)

交叉編譯工具鏈已經(jīng)是國(guó)產(chǎn)軟件生態(tài)的基礎(chǔ)設(shè)施。

鋇錸技術(shù)也在大量項(xiàng)目中使用國(guó)產(chǎn)平臺(tái),并持續(xù)適配國(guó)產(chǎn)架構(gòu)的交叉工具鏈,使得:

? 用戶能快速在國(guó)產(chǎn)平臺(tái)部署應(yīng)用? 整體開(kāi)發(fā)鏈路不再混亂? 工程效率明顯提升

七、最后,讓我們講講“鋇錸技術(shù)的交叉編譯經(jīng)驗(yàn)”

我們?cè)谧?ARMxy 系列、BL 工控設(shè)備、IPM 模塊、國(guó)產(chǎn)化平臺(tái)時(shí),總結(jié)出一套工程師非常喜歡的方法——

鋇錸技術(shù)交叉編譯“三件套”

完整交叉工具鏈(Toolchain)已驗(yàn)證可用,不會(huì)踩坑。

配套 sysroot保證編譯環(huán)境與設(shè)備運(yùn)行環(huán)境一致。

示例工程模板工程師復(fù)制即可開(kāi)工。

你不需要思考“路徑要怎么寫”“庫(kù)怎么找”“平臺(tái)是不是對(duì)”等細(xì)節(jié)。

真正做到工程師最喜歡的四個(gè)字:

開(kāi)箱即用。

七、最后,讓我們講講“鋇錸技術(shù)的交叉編譯經(jīng)驗(yàn)”

寫代碼的人都知道:

在 PC 上開(kāi)發(fā)? 在 ARM / RISC-V / 國(guó)產(chǎn) CPU 上運(yùn)行

這件事從來(lái)不是“可選項(xiàng)”,而是“必選項(xiàng)”。

交叉編譯真正的意義,就是:

讓你的軟件能高效、穩(wěn)定、批量地跑在各種嵌入式設(shè)備上。

如果你正在基于鋇錸技術(shù)的產(chǎn)品做二次開(kāi)發(fā)、協(xié)議擴(kuò)展、算法部署——你一定會(huì)和交叉編譯天天見(jiàn)面。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11764

    瀏覽量

    219092
  • 交叉編譯
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    13027
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ?VA和W怎么換算?功率因數(shù)怎么算??jī)?yōu)比施電源講清楚

    ?在選購(gòu)UPS電源或任何電氣設(shè)備時(shí),很多人都會(huì)遇到個(gè)困惑:設(shè)備銘牌上標(biāo)注的VA和W到底是什么意思?它們之間有什么關(guān)系?為什么有的設(shè)備標(biāo)500VA,有的標(biāo)500W,兩者卻不相等?今天,優(yōu)比施電源就從
    的頭像 發(fā)表于 03-07 13:31 ?37次閱讀
    ?VA和W怎么換算?功率因數(shù)怎么算??jī)?yōu)比施電源<b class='flag-5'>一</b>次<b class='flag-5'>講清楚</b>

    不間斷電源是干什么用的??jī)?yōu)比施講透

    ……這些令人懊惱甚至帶來(lái)?yè)p失的瞬間,都與一個(gè)詞有關(guān)——電力中斷。而不間斷電源,正是為解決這些問(wèn)題而生。今天,優(yōu)比施電源用最通俗易懂的方式,為您講清楚不間斷電源到底是干什
    的頭像 發(fā)表于 03-03 08:48 ?99次閱讀
    不間斷電源是干什么用的??jī)?yōu)比施<b class='flag-5'>一</b><b class='flag-5'>文</b>講透

    TCP三次握手與四次揮手的詳細(xì)過(guò)程

    TCP 三次握手和四次揮手,大概是網(wǎng)絡(luò)領(lǐng)域被問(wèn)爛了的面試題。但真正能把狀態(tài)變遷、序列號(hào)變化、抓包細(xì)節(jié)講清楚的人并不多。很多人背八股,到生產(chǎn)環(huán)境看 Wireshark 抓包就懵
    的頭像 發(fā)表于 02-25 10:38 ?234次閱讀

    Linux設(shè)備樹(shù)到底是?張圖看懂硬件適配的「翻譯官」

    你有沒(méi)有想過(guò):同Linux 內(nèi)核鏡像,為啥能在不同型號(hào)的開(kāi)發(fā)板上跑起來(lái)?比如塊 ARM 架構(gòu)的開(kāi)發(fā)板,今天換個(gè)顯示屏、明天加個(gè)傳感器,內(nèi)核不用重新編譯就能識(shí)別新硬件 —— 這背
    的頭像 發(fā)表于 02-09 17:01 ?1066次閱讀
    <b class='flag-5'>Linux</b>設(shè)備樹(shù)<b class='flag-5'>到底是</b><b class='flag-5'>啥</b>?<b class='flag-5'>一</b>張圖看懂硬件適配的「翻譯官」

    企業(yè)為什么開(kāi)始換用 RFID智能硬盤柜?選型標(biāo)準(zhǔn)講清楚

    在企業(yè)的數(shù)據(jù)資產(chǎn)管理體系中,硬盤直是非常特殊的類介質(zhì)。它體積小、價(jià)值高、存儲(chǔ)密度大,旦丟失或流轉(zhuǎn)不規(guī)范,風(fēng)險(xiǎn)遠(yuǎn)高于紙質(zhì)檔案。本文結(jié)合業(yè)內(nèi)廣泛采用斯科兩款機(jī)型——CK-GYP?和?CK-GYP1,把企業(yè)在選型時(shí)真正需要關(guān)注的
    的頭像 發(fā)表于 12-10 09:38 ?278次閱讀

    單模 vs 多模:光纖選擇終極指南

    很多朋友在組建網(wǎng)絡(luò)時(shí)都會(huì)遇到個(gè)核心問(wèn)題:我到底該用多模光纖還是單模光纖?今天,小易就為大家徹底講清楚這兩者的區(qū)別,幫助您做出最經(jīng)濟(jì)、高效的選擇。
    的頭像 發(fā)表于 12-08 14:12 ?989次閱讀
    單模 vs 多模:光纖選擇終極指南

    別再裝系統(tǒng)!Linux 鏡像到底是什么?篇講到你懷疑人生

    多小、環(huán)境多復(fù)雜,如何快速安裝、部署和維護(hù) Linux 系統(tǒng),都是開(kāi)發(fā)者和運(yùn)維人員必須掌握的核心技能。 這時(shí),“Linux 鏡像文件”就顯得尤為重要。它就像份完整的系統(tǒng)快照,讓你可以在不同設(shè)備之間快速遷移、復(fù)制,甚至批量部署。
    的頭像 發(fā)表于 12-03 16:12 ?817次閱讀
    <b class='flag-5'>別再</b>裝系統(tǒng)<b class='flag-5'>了</b>!<b class='flag-5'>Linux</b> 鏡像<b class='flag-5'>到底是</b>什么?<b class='flag-5'>一</b>篇講到你懷疑人生

    Linux交叉編譯實(shí)戰(zhàn):跑起來(lái)你的第一個(gè) STM32 程序

    很多開(kāi)發(fā)者第次接觸STM32,總會(huì)被“交叉編譯”、“燒錄程序”等概念繞暈。其實(shí)方法很簡(jiǎn)單:在Linux下配置交叉
    的頭像 發(fā)表于 11-24 19:04 ?828次閱讀
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>實(shí)戰(zhàn):跑起來(lái)你的第<b class='flag-5'>一個(gè)</b> STM32 程序

    GPIO、PWM、ADC,到底怎么區(qū)分?

    在嵌入式開(kāi)發(fā)中,我們經(jīng)常聽(tīng)到GPIO、PWM、ADC這些術(shù)語(yǔ)。初學(xué)者常常搞不清楚它們的區(qū)別和用途:“它們不是都是和電平有關(guān)嗎?為什么還要分這么多種?”今天,我們就把這些基礎(chǔ)概念講清楚,讓你在動(dòng)手開(kāi)發(fā)
    的頭像 發(fā)表于 11-14 10:28 ?770次閱讀
    GPIO、PWM、ADC,<b class='flag-5'>到底</b>怎么區(qū)分?

    學(xué)習(xí)Linux應(yīng)該從哪里開(kāi)始?

    、交叉編譯、網(wǎng)絡(luò)棧、文件系統(tǒng)……到底從哪里開(kāi)始學(xué),才能既不繞彎路,又能學(xué)得“有感覺(jué)”? 今天, 深圳市鋇錸技術(shù)有限公司 就來(lái)帶你拆解這個(gè)問(wèn)題。 、先理解:
    的頭像 發(fā)表于 10-16 09:51 ?463次閱讀
    學(xué)習(xí)<b class='flag-5'>Linux</b>應(yīng)該從哪里開(kāi)始?

    了解什么是 BQB 認(rèn)證

    講清楚。、什么是BQB認(rèn)證?BQB是BluetoothQualificationBody的縮寫,即“藍(lán)牙資格認(rèn)證”。它是由**藍(lán)牙技術(shù)聯(lián)盟(BluetoothSI
    的頭像 發(fā)表于 07-18 14:53 ?1917次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>了解什么是 BQB 認(rèn)證

    請(qǐng)問(wèn)編譯純r(jià)tos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?

    編譯純r(jià)tos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?
    發(fā)表于 07-11 07:22

    不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境

    嵌入式Linux系統(tǒng),由于系統(tǒng)資源的匱乏,通常無(wú)法安裝本地編譯器進(jìn)行本地開(kāi)發(fā),而需要在借助臺(tái)主機(jī)進(jìn)行交叉開(kāi)發(fā)。般情況下,在主機(jī)安裝相應(yīng)的
    的頭像 發(fā)表于 05-21 11:34 ?943次閱讀
    不借助<b class='flag-5'>Linux</b>系統(tǒng),在Windows下如何搭建ZMC900E<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>環(huán)境

    講清楚芯片的分類-多個(gè)維度

    芯片作為現(xiàn)代電子設(shè)備的核心組件,其分類方式多樣,以下從功能、應(yīng)用領(lǐng)域、制造工藝、集成度、設(shè)計(jì)架構(gòu)、用途、數(shù)據(jù)類型、工作方式、材料及封裝形式十個(gè)維度進(jìn)行詳細(xì)闡述: 、按功能分類 1. 處理器芯片
    的頭像 發(fā)表于 05-06 15:04 ?6383次閱讀

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

    大家好,我是老王,在電子行業(yè)干了十幾年,今天我就用“大白話”給大家講講DA板卡到底是,它和咱們常說(shuō)的“主板”有區(qū)別。文章里會(huì)穿插些表格和實(shí)際案例,保證你讀完不僅能懂,還能跟朋友吹
    的頭像 發(fā)表于 04-24 16:48 ?2435次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>給你講透!DA板卡<b class='flag-5'>到底是</b>什么?它和主板又有哪些不同?