最近用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...