交叉編譯場景分析(arm-linux)--序
交叉編譯場景分析(arm-linux)--序
去年花了一個多月時間,為arm-linux平臺編譯程式庫,其中包括zlib、readline、ncurses、tslib、TinyX、libpng、jpeg、cairo、pango、glib、atk、gtk+、match系列、SCIM、GPE系列。由於之前沒有經驗,走了不少彎路,雖然從中學到了一些知識,大部分時間都浪費了。最近一些同事和朋友常問我一些關於交叉編譯的問題,我想有必要總結一下,和大家分享一些心得。
什麼是交叉編譯呢?在回答這個問題前,我們先解釋兩個概念:
主 機:執行編譯過程的計算機。
目標機:執行編譯結果(可執行檔案)的計算機。
一般情況下,主機和目標機是同一型別的計算機,這就是正常的編譯,沒有什麼好說的。所謂交叉編譯就是在主機上為目標機編譯,比如在PC上編譯,然後在手機上執行,這種編譯就叫交叉編譯。
交叉編譯需要交叉編譯器,不同的目標機(主要是看晶片型別)需要不同的交叉編譯器,比如我們這裡要介紹的arm-linux交叉編譯,所用的交叉編譯器就是arm-linux-gcc系列。
構建一個交叉編譯器(toolchain),說簡單也簡單,說複雜也複雜。原理上很簡單,實際情況常常比較複雜,原因是編譯器一直處於開發狀態,你要了解某個版本的穩定性,要去找patch。有時候還要看你的運氣好不好,折騰一個星期才搞定也是很常見的。
網上已經有不少已經構建好了的交叉編譯器(toolchain),除非你想了解如何構建交叉編譯器,否則直接下載一個來用是比較明智的做法。這裡不打算介紹如何構建交叉編譯器的知識。
在做交叉編譯前,你最好了解autoconf系統工具的用法,遇到問題時,可以快速定位。先找一本autoconf的書看看,可以說是磨刀不識砍柴功,否則後面會浪費更多的時間。
相關文章
- 交叉編譯場景分析(arm-linux)(四)--編譯readline和ncurses編譯Linux
- 交叉編譯編譯
- lazarus交叉編譯編譯
- golang交叉編譯Golang編譯
- GDB交叉編譯編譯
- go 交叉編譯,部署Go編譯
- 交叉編譯入門編譯
- 交叉編譯和 RPC編譯RPC
- linux與windows交叉編譯LinuxWindows編譯
- golang初學:交叉編譯Golang編譯
- 交叉編譯mupdf1.15.0編譯
- Rust 交叉編譯與條件編譯總結Rust編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 編譯器的自展和自舉、交叉編譯編譯
- Go跨平臺交叉編譯Go編譯
- Ubuntu交叉編譯環境配置Ubuntu編譯
- Go - armv7 交叉編譯Go編譯
- 交叉編譯工具鏈構建原理編譯
- 交叉編譯c++給android呼叫編譯C++Android
- Go語言交叉編譯工具goxGo編譯
- protobuf 的交叉編譯使用(C++)編譯C++
- 全網可用交叉編譯工具鏈大全編譯
- 關於Gdb工具的交叉編譯、移植編譯
- Tinyx 交叉編譯配置檔案(arm版)編譯
- 32位支援:使用 GCC 交叉編譯GC編譯
- 在WSL下為OpenWRT交叉編譯出CMake編譯
- 如何對 Neuron 原始碼進行交叉編譯原始碼編譯
- Golang在各平臺下如何交叉編譯Golang編譯
- 使用 goxc 方便的進行交叉編譯分發Go編譯
- 實現交叉編譯gdb和gdbserver(gdb-7.6)編譯Server
- 交叉編譯庫依賴問題的解決方法編譯
- FFmpeg開發筆記(十六)Linux交叉編譯Android的OpenSSL庫筆記Linux編譯Android
- FFmpeg開發筆記(八)Linux交叉編譯Android的FFmpeg庫筆記Linux編譯Android
- 掌握這些,輕鬆管理BusyBox:如何交叉編譯和整合BusyBox編譯
- 最新全志R11_Tina_2.5_交叉編譯器介紹編譯
- 全棧交叉編譯X86完成過程經驗分享全棧編譯
- 多場景靜態化編譯在兩輪SAAS用車實踐編譯
- ThreadLocal的使用場景分析thread