1. 程式人生 > >關於交叉編譯中host,build,target記載

關於交叉編譯中host,build,target記載

以下為轉載連結,以備以後檢視所用。

一、build  host   target 的區別

(1)ubuntu16.04 的引數資訊如下(gcc -v 檢視)

build:執行程式碼編譯的主機,正常的話就是你的主機系統。

host:編譯出來的二進位制程式所執行的主機,因為絕大多數是如果本機編譯,本機執行。所以這個值就等於build。

--build=x86_64-linux-gnu  :執行程式碼編譯的主機

--host=x86_64-linux-gnu   :編譯出來的二進位制程式所執行的主機

--target=x86_64-linux-gnu  :只有在建立交叉編譯環境的時候用到,正常編譯和交叉編譯都不會用到。他用build主機上的編譯器,編譯一個新的編譯器

(binutils, gcc,gdb等),這個新的編譯器將來編譯出來的其他程式將執行在target指定的系統上。

(2)搭建交叉編譯環境,或者是交叉編譯程式

只有host !=build的時候編譯才是交叉編譯。否則就是正常編譯

例子:

./configure --build=i686-linux-gnu  --host=arm-poky-linux-gnueabi

其中--build=i686-linux-gnu 為本機編譯器的名字(ubuntu16.04)

 --host=arm-poky-linux-gnueabi(開發板的名字)

交叉編譯涉及的幾個名詞的區別build、host、target

開源軟體的交叉編譯步驟:

./configure –help      檢視幫助文件

./configure –prefix=安裝路徑 --build=i686-linux-gnu  --host=arm-poky-linux-gnueabi 

交叉編譯涉及的幾個名詞的區別build、host、target

(3)製作交叉編譯工具鏈

--prefix 指明安裝路徑

二、 交叉編譯註意事項:

執行一個程式時有沒有sudo 對環境變數的影響很大

例如 :當以普通使用者登入時 ,將環境變數加在了當前使用者下的.bashrc中,當以sudo 執行時,此刻環境變數就找不到了,因為此時找的是root下的.bashrc ,而這個檔案中並沒有所新增的環境變數。

當交叉編譯工具鏈的環境變數在普通使用者下時,在執行配置指令碼只能用./configure

如果針對多使用者都需要用,建議把環境變數加在root下的.bashrc中

三、 環境變數在自己寫的指令碼的執行:    source 相當於 .

source 讀取指令碼的環境變數輸出到 本shell 中

此時用  source imx6qt.sh   或者 . imx6qt.sh

四、當重新交叉編譯時:

必須執行 make clean –w   刪除makefile檔案

make distclean