通過crosstool製作交叉編譯工具

2021-04-26 12:51:29 字數 3808 閱讀 7552

網上有很多相關資料,我來補充一些細節吧!

主要是為了編譯uboot,消除softfloat問題,不得不自己製作。

1)以root登陸,或者通過sudo root進入。

2)建立目錄/opt/crosstool/並修改並修改其owner。是因為此crosstool不能以root安裝,而須以username安裝,安裝過程會讀寫此目錄,故需要修改屬主。

所以建立按乙個普通使用者,比如bobyu,

執行:tar xzvf crosstool-0.43.tar.gz

選擇自己希望的模板,這兒是以arm9做試驗玩,因此選擇了 demo-arm9tdmi.sh 做模板。

如果需要消除softfloat問題,這裡有demo-arm-softfloat.sh可以選用

cat demo-arm9tdmi.

sh可以看到

#!/bin/sh

# this script has one line for each known working toolchain

# for this architecture. uncomment the one you want.

# generated by generate-demo.pl from buildlogs/all.dats.txt

set -ex

tarballs_dir=/home/lpsc/downloads

result_top=/home/lpsc/crosstool

export tarballs_dir result_top

gcc_languages=」c,c++」

export gcc_languages

# really, you should do the mkdir before running this,

# and chown /opt/crosstool to yourself so you don』t need to run as root.

mkdir -p $result_top

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh –notest

#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh –notest

eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh –notest

echo done.

其中紅色字為自己修改的地方,看最後乙個紅色的行,表示我們要編譯 gcc 4.1.0 的。

生成的工具放到/home/lpsc/crosstool,預設是/opt/crosstool

cat arm9tdmi.dat

可以看到

kernelconfig=`pwd`/arm.config

target=arm-9tdmi-linux-gnu

gcc_extra_config=」–with-cpu=arm9tdmi –enable-cxx-flags=-mcpu=arm9tdmi」

target_cflags=」-o」

其中紅色的文字可以根據自己的需要做修改,一般是 arm-linux ,符合網上面很多編譯情形的。

cat gcc

-4.1

.0-glibc

-2.3

.2-tls.dat

可以看到

binutils_dir=binutils-2.16.1

gcc_core_dir=gcc-3.3.6

gcc_dir=gcc-4.1.0

glibc_dir=glibc-2.3.2

linux_dir=linux-2.6.15.4

linux_sanitized_header_dir=linux-libc-headers-2.6.12.0

glibcthreads_filename=glibc-linuxthreads-2.3.2

#預設沒有編譯gdb可以加上,但是在源程式中必須放入gdb-6.5. $(home)/downloads

#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest --gdb

#可以編譯生成gdb

gdb_dir=gdb-6.5

glibc_extra_config=」$glibc_extra_config –with-tls –with-__thread –enable-kernel=2.4.18″

執行:sh demo-arm-softfloat.sh

或者:./demo-arm9tdmi.sh

用Crosstool 製作交叉編譯工具鏈

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

用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工具構建交叉工具鏈

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...