crosstool ng 製作arm交叉工具鏈心得

2021-07-11 08:26:03 字數 2905 閱讀 7027

最近用crosstool-ng 最新版(當前是

1.22.0)編譯出了交叉工具鏈工具

以下是基本操作步驟:

首先,編譯安裝crosstool-ng

1)配置 sudo ./configure --prefix=/opt/crosstool-ng      #配置安裝目錄為/opt/crosstool-ng

2)編譯 sudo make

3)安裝  sudo make install

4)設定環境變數 echo "export path=$path:/

opt/crosstool-ng/bin " >> ~/.bashrc

第二,配置工具鏈

1.檢視一下有哪些工具鏈選項

1)ct-ng 

list-samples

2)ct-ng 

arm-unknown-linux-gnueabi (以arm-unknown-linux-gnueabi為例,可以選其它)

3)ct-ng menuconfig

這個有點多:

paths and misc options  --->

($/development/crosstool-ng/src) local tarballs directory  

儲存原始碼包路徑

($/development/x-tools/$) prefix directory  

交叉編譯器的安裝路徑

(4) number of parallel jobs    指定同時執行 4個工作執行緒

target options  --->     從datasheet中的 block diagram 中可以看到

*** target optimisations ***

(armv4t

) architecture level 

(arm9tdmi

) emit assembly for cpu    

(arm920t

) tune for cpu

crosstool-ng中的architecture level, emit assembly for cpu, tune for cpu,分別對應的是gcc中的-march=***, -mcpu=***, -mtune=***

s3c2440的對應的配置是:

toolchain options --- >

(cortex_a8 )  tuple's vendor string

新增自定義 資訊 ,比如:

cortex_a8 ,製作後的交叉編譯器名如: arm -cortex_a8 -linux-gnueabi-

zjhzjh ,製作後的交叉編譯器名如: arm -zjhzjh -linux-gnueabi-

不設定,製作後的交叉編譯器名如: arm -unknown-linux-gnueabi-

(armarm -linux) tuple's alias) tuple's alias

arm -linux-gcc鏈結到 到 arm -cortex_a8-linux-gnueabi-gcc

第三,開始編譯工具鏈

ct-ng build

(注意,硬碟空間要預留大一些,至少6g以上,上次用10g )

以下是高階步驟:

由於即使是最新版的crosstool其中的核心,gcc binuntils等工具包版本也是過時的,比如,核心版本是4.3,而當前版本是4.5.1

所以,需要動手修改crosstool中的配置檔案進行最新版本更新,當然,此步驟是在編譯過crosstool中的最新版本後進行

主要修改/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config目錄下各檔案

以核心為例:

核心 kernel目錄下linux.in 

4.5.1是我新增的 還有定義主要修改這兩處

config kernel_v_4_5_1

bool

prompt "4.5.1 (stable)"

config kernel_v_4_3

bool

prompt "4.3"

default "4.5.1" if kernel_v_4_5_1

default "4.3" if kernel_v_4_3

更改gcc  在目錄/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config/cc

config cc_gcc_v_5_3_0

bool

prompt "5.3.0"

select cc_gcc_5

config cc_gcc_v_5_2_0

bool

prompt "5.2.0"

select cc_gcc_5

default "5.3.0" if cc_gcc_v_5_3_0

default "5.2.0" if cc_gcc_v_5_2_0

最新版本的是5.3.0 crosstool-ng中的最高版本是5.2.0

就是新增版本號,仿造它原來的,以此類推

其它的庫在companion_libs中

哪個公升版本了就新增公升級後的版本號

這樣編譯出來的工具鏈就是最新版本的組合了。

還有乙個是在編譯cortex a8等高階cpu時,在配置的時候可以將fpu改為硬體浮點,這樣,才編譯時會用到cpu內部的硬體浮點部件

以s5pv210為例:由於支援neon和vfpv3所以可以使用硬體浮點

(cortex-a8) emit assembly for cpu 

(neon) use specific fpu                          此處也可以使用vfpv3因為s5pv210支援

floating point: (hardware (fpu)) --->

這樣,編譯出來的就是使用硬體浮點的工具鏈了。

AR 關於AR實時陰影的製作

原作者 大家都知道,ar本身對平行光的陰影是不現實的,之前用過momo的乙個方法實現了實時陰影,但是效果不是非常好,後面在論壇中發現了乙個比較實用的方法。話不多說,切入正題。首先 寫乙個shader用來作為接收光照陰影 properties cutoff alpha cutoff range 0,1...

Crosstool NG 簡單使用

進入 crosstool ng 官網 解壓至 linux 系統某資料夾 本文使用 debian buster 進入解壓後的檔案目錄,執行.configure 無引數為預設配置 若提示缺少某些工具,則使用 apt 安裝,然後再次執行.configure,直到不再提示缺少工具。編譯 crosstool ...

gcc 靜態庫製作之ar命令使用

前言 我們通常把一些公用函式製作成函式庫,供其他程式使用。函式庫分為靜態庫和動態庫兩種。本文講解如何製作屬於自己的靜態庫。什麼是靜態庫?通常來說,靜態庫以.a作為字尾,且以lib開頭。類似於lib a。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫。ar命令詳解 linux ar...