共計 1950 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容主要講解“linux 交叉編譯的作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“linux 交叉編譯的作用是什么”吧!
在 linux 中,交叉編譯是一種計算機環境中運行的編譯程序,能編譯出另外一種環境下運行的代碼;交叉編譯出來的程序,所要運行的目標環境中,各種資源,都相對有限,所以很難進行直接的本地編譯,有時是因為目的平臺上不允許或不能夠安裝我們所需要的編譯器,而我們又需要這個編譯器的某些特征,所以需要使用交叉編譯。
本教程操作環境:linux7.3 系統、Dell G3 電腦。
linux 交叉編譯有什么用
什么是交叉編譯
本地編譯
解釋什么是交叉編譯之前,先要明白一個概念:本地編譯
我們之前常見的軟件開發,都是屬于本地編譯:在當前的 PC 下,x86 的 CPU 下,直接編譯出來程序,可以運行的程序(或者庫文件),其可以直接在當前的環境,即 x86 的 CPU 下,當前電腦中,運行。
此時的編譯,可以叫做:本地編譯,即在當前目標平臺下,編譯出來的程序,也只是放到當前平臺下,就可以運行的。
交叉編譯
交叉編譯,是一個和,本地編譯,相對應的概念。
而所謂的,交叉編譯,就是:在一種平臺上編譯,編譯出來的程序,是放到別的平臺上運行即編譯的環境,和運行的環境不一樣,屬于交叉的,此所謂 cross。
交叉編譯,這個概念,主要和嵌入式開發有關。
例 如.:在 x86 平臺上編譯,在 ARM 平臺上運行。
一種最常見的例子就是:
在進行嵌入式開發時手上有個嵌入式開發板,CPU 是 arm 的然后在 x86 的平臺下開發,比如 Ubuntu 的 Linux,或者是 Win 10 然后就需要:
在 x86 的平臺上,(用交叉編譯器)去編譯你寫好的程序代碼
編譯生成的(可執行的)程序,是放到目標開發板,arm 的 CPU 上運行的
此所謂:在 x86 平臺上編譯,在 ARM 平臺上運行。
交叉編譯,英文常寫作 cross compile,也有其他寫法:crosscompile, cross compiling 等。
為何要有交叉編譯
之所以要有交叉編譯,主要原因是:嵌入式系統中的資源太少
具體的解釋就是:交叉編譯出來的程序,所要運行的目標環境中,各種資源,都相對有限,所以很難進行直接的本地編譯。
最常見的情況是:在進行嵌入式開發時,目標平臺,即嵌入式開發板,比如是最大主頻 200MHz 的 ARM 的 CPU,加上 32M 的 RAM,加上 1G 的 Nand Flash 等等。在如此相對比較緊張的硬件資源的前提下,在已經運行了嵌入式 Linux 的前提下,是沒法很方便的直接在嵌入式 Linux 下,去本地編譯,去在 ARM 的 CPU 下,編譯出來,供 ARM 的 CPU 可以運行的程序的。因為編譯,開發,都需要相對比較多的 CPU,內存,硬盤等資源,而嵌入式開發上的那點資源,只夠嵌入式(Linux)系統運行的,沒太多剩余的資源,供你本地編譯。
BusyBox 中包含 make 等和編譯開發相關的工具
對應的,等你后期熟悉了嵌入式開發,熟悉了 Busybox 后,比如在 Buildroot 中去配置 Busybox,或者單獨交叉編譯 BusyBox 時:
【記錄】Ubuntu 下為 QEMU 的 arm 平臺交叉編譯 BusyBox
就會看到,后來的 BusyBox,功能增加后,也已經包含了一些,和編譯開發相關的工具,比如 make 等等
而這些工具,本來的話,只是,放在 PC 端使用,即在 x86 平臺下做開發的時候,在交叉編譯的時候,才用到的工具,現在,也在(BusyBox 的)嵌入式環境中,支持了。
此時,如果,你在 BusyBox 中把相關的開發工具都選上的話,
再加上,你的目標開發板的硬件配置足夠強大的話,比如 CPU 都是以 GHz 為單位,等等
加上相關的開發的庫和工具都很全的話
實際上,至少理論上,也是可以在你的嵌入式 Linux 中,進行,有限的,甚至是很大程度上的,本地開發即,直接在 ARM 的開發板上,嵌入式 Linux 中,直接進行嵌入式開發,進行針對 ARM 的本地編譯
比如,編譯出一個 helloworld,估計還是可以的。
這樣,就不存在,或者說,避免了,此處所說的,交叉編譯,而變成了本地編譯
就相當于,之前在 x86 的 PC 端的,編譯程序放在 x86 的 CPU 上運行的本地編譯,
在 ARM 的 CPU,嵌入式 Linux 中,也實現了
但是很明顯,對于更加復雜的程序或者庫,在 ARM 開發板上直接編譯的可行性和效率,相對就很低
而且如果是本身折騰 Uboot 等東西,本身目標運行環境,就沒有完整的(嵌入式 Linux)系統的話,那么就更加沒法在目標平臺實現本地編譯了。
則還是只能進行,此處所說的,交叉編譯
到此,相信大家對“linux 交叉編譯的作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!