交叉編譯相關

2021-06-27 04:55:35 字數 1013 閱讀 4218

clfs2.0原理分析 

*****==

看來沒什麼特別需要說明的,非交叉編譯用的引數基本上和lfs沒什麼太大區別,反正最重要的就是這個--with-sysroot,好了,三次--with-sysroot都出現了,雖然前面對這個引數也說明了一下,但不夠詳細,

下面我就來說說對這個關鍵引數的理解

。 我們在做lfs的過程中了解到gcc在編譯過程中是預設從/usr/include中找標頭檔案的來編譯的,而binutils中的工具ld是從/lib /usr/lib、ld_library_path、/etc/ld.so.conf等設定中所指定的路徑搜尋動態庫或者靜態庫進行鏈結操作的,而要改變這種預設情況則可以通過引數指定、打補丁等方式來達到目的,但是這樣非常煩瑣,所以就產生了lfs中工具鏈的方法,通過先做乙個能自我編譯的工具鏈,但這些工具鏈中的程式都是連線到類似/tools/lib這樣的目錄下的庫中,而且也是通過引數指定或者打補丁的方式來實現的,並不符合標準的/lib /usr/lib,所以後面在chroot後再用這個工具鏈來生成目標系統。 

而現在我們用clfs2.0的方法不需要再建立這個完整的工具鏈了,只是建立乙個交叉用的工具鏈,而這個工具鏈中的程式都是鏈結到/lib和/usr/lib裡的庫的,這樣乙個工具鏈是不能chroot,但現在我們要利用這個「不健全」的工具鏈來完成目標體系平台,就必須要用到更改預設路徑的方式,這個方式就是--with-sysroot。 

乙個簡單的理解

就是,預設的路徑實際上都是/usr /usr/lib /usr/include這樣的形式,只是在預設的情況下表示的是空字串,這樣就變成了/usr /usr/lib /usr/include,而如果我們指定了--with-sysroot,比如--with-sysroot=/mnt/clfs,則預設路徑就變成了/mnt/clfs/usr /mnt/clfs/usr/lib /mnt/clfs/usr/include,這樣我們在編譯時查詢標頭檔案以及在鏈結時查詢動態或靜態庫就自動到--with-sysroot指定的路徑下來完成。這個就是--with-sysroot引數的目的。 

**********====

編譯 交叉編譯

交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...

交叉編譯(2) 交叉編譯鏈

什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...

交叉編譯 Go 交叉編譯 跨平台編譯

golang 支援交叉編譯,在乙個平台上生成另乙個平台的可執行程式 cgo enabled 0 goos linux goarch amd64 go build main.go cgo enabled 0 goos windows goarch amd64 go build main.go cgo ...