用Crosstool工具構建交叉工具鏈

2021-06-01 05:48:45 字數 2499 閱讀 6744

1.以root 身份, 為 /opt 賦操作許可權

#cd /

#chmod 777 opt

2.準備資源檔案

linux-2.6.10.tar.gz

binutils-2.15.tar.bz2

gcc-3.3.6.tar.gz

glibc- 2.3.2.tar.gz

glibc-linuxthreads-2.3.2.tar.gz

linux-libc-headers-2.6.12.0.tar.bz2

然後以普通使用者身份登入, 將這些工具包檔案放在新建的

$cd ~

$mkdir downloads                    目錄下,最後在/home/leo目錄下解壓crosstool-0.42.tar.gz,命令如下:

$cd downloads

$ tar –xvzf crosstool-0.42.tar.gz

3.建立指令碼檔案

接著需要建立自己的編譯指令碼,起名為arm.sh,為了簡化編寫arm.sh,尋找乙個最接近的指令碼檔案demo-arm.sh作為模板,然後將該指令碼的內容複製到arm.sh,修改arm.sh指令碼,具體操作如下:

$ cd crosstool-0.42

$ cp demo-arm.sh arm.sh

$ vi arm.sh

修改後的arm.sh指令碼內容如下:

#!/bin/sh

set -ex

tarballs_dir=/home/leo/downloads   # 定義工具鏈原始碼所存放位置。

result_top=/opt/crosstool 

# 定義工具鏈的安裝目錄

export tarballs_dir result_top

gcc_languages="c,c++" 

# 定義支援c, c++語言

export gcc_languages

# 建立/opt/crosstool目錄

mkdir -p $result_top

# 編譯工具鏈,該過程需要數小時完成。

eval 'cat arm.dat gcc-3.3.6-glibc-2.3.2.dat'  sh all.sh --notest

echo done.

4.建立配置檔案

在arm.sh 指令碼檔案中需要注意arm.dat和gcc-3.3.6-glibc-2.3.2.dat兩個檔案,這兩個檔案是作為crosstool的編譯的配置檔案。其中arm.dat檔案內容如下,主要用於定義配置檔案、定義生成編譯工具鏈的名稱以及定義編譯選項等。

kernelconfig='pwd'/arm.config  # 核心的配置

target=arm-linux 

# 編譯生成的工具鏈名稱

target_cflags="-o" 

# 編譯選項

binutils_dir=binutils-2.15

gcc_dir=gcc-3.3.6

glibc_dir=glibc-2.3.2

glibcthreads_filename=glibc-linuxthreads-2.3.2

linux_dir=linux-2.6.10

linux_sanitized_header_dir=linux-libc-headers-2.6.12.0

5.執行指令碼

$ cd crosstool-0.42

$ ./arm.sh 

經過數小時的漫長編譯之後,會在/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin目錄下生成新的交叉編譯工具,其中包括以下內容:

arm-linux-addr2line arm-linux-g++ 

arm-linux-ld 

arm-linux-size

arm-linux-ar 

arm-linux-gcc 

arm-linux-nm 

arm-linux-strings

arm-linux-as 

arm-linux-gcc-3.3.6 arm-linux-objcopy   arm-linux-strip

arm-linux-c++ 

arm-linux-gccbug 

arm-linux-objdump   fix-embedded-paths

arm-linux-c++filt   arm-linux-gcov 

arm-linux-ranlib

arm-linux-cpp 

arm-linux-gprof 

arm-linux-readelf

6.新增環境變數

直接輸入export path=/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin:$path

注意一下兩點:

1: ./arm.sh的時候j是以普通使用者身份執行

2:arm.dat target=arm-linux如果是arm-linux-那就是錯誤的

用Crosstool工具構建交叉工具鏈

用crosstool工具構建交叉工具鏈 用crosstool cd home lsf 筆者使用的使用者名稱是 lsf tar xvzf crosstool 0.43.tar.gz cd crosstool 0.43 cp demo powerpc.sh ppc 405.sh vi ppc 405.s...

用Crosstool 製作交叉編譯工具鏈

解壓到downloads資料夾 apt get install bison apt get install flex 二 進入解壓後的crosstool vim demo arm softflaot.sh 修改如下兩行 tarballs dir home downloads 所需安裝包儲存目錄 re...

通過crosstool製作交叉編譯工具

網上有很多相關資料,我來補充一些細節吧!主要是為了編譯uboot,消除softfloat問題,不得不自己製作。1 以root登陸,或者通過sudo root進入。2 建立目錄 opt crosstool 並修改並修改其owner。是因為此crosstool不能以root安裝,而須以username安...