製作mipsel 交叉工具鏈 (更新版)

2021-06-20 08:15:49 字數 4917 閱讀 1319

1. **結構為:

setup ---> 源**壓縮包

:~/code/cross-compile$ ls setup/

binutils-2.24.tar.bz2 gcc-4.7.1.tar.bz2 gdb-7.6.2.tar.bz2 glibc-2.18.tar.bz2 linux-3.10.tar.bz2

gcc-4.6.4.tar.bz2 gcc-4.8.0.tar.bz2 glibc-2.17.tar.bz2 glibc-linuxthreads-2.5.tar.bz2 termcap-1.3.1.tar.gz

src --->原始碼

~/code/cross-compile$ ls src/

binutils-2.24 gcc-4.7.1 gdb-7.6.2 glibc-2.18

build --> 編譯目錄

:~/code/cross-compile$ ls build/

binutils gcc gdb glibc

kernel ----> 核心**:

~/code/cross-compile/kernel$ ls

linux-3.10

2.編譯 binutils

在build/binutils 下,執行命令:

../../src/binutils-2.24/configure --target=mipsel-linux-gnueabi --prefix=/home/charles/code/cross-compile/embedded-toolchain/cross-tools --with-sysroot=/home/charles/code/cross-compile/embedded-toolchain
然後,執行 make, make install 安裝

3. 編譯  gcc stage 1

在 build/gcc目錄下,執行

ar=ar ldflags="-wl,-rpath=/home/charles/code/cross-compile/embedded-toolchain/cross-tools/lib" ../../src/gcc-4.7.1/configure --prefix=/home/charles/code/cross-compile/embedded-toolchain/cross-tools --target=mipsel-linux-gnueabi  --with-sysroot=/home/charles/code/cross-compile/embedded-toolchain --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local --with-newlib --without-headers --disable-multilib --disable-nls --disable-decimal-float --disable-libgomp --disable-libmudflap --disable-libssp --disable-shared --disable-threads --enable-languages=c  --with-float=soft --with-arch=mips32r2 --with-tune=mips32r2
然後,

make all-gcc all-target-libgcc

make install-gcc install-target-libgcc

4. 安裝核心標頭檔案

進入到核心**目錄,

執行命令:

arch=mips make mrproper

arch=mips make headers_check

arch=mips cross_compile=mipsel-gcc-linux-gnueabi make install_hdr_path=/home/charles/code/cross-compile/embedded-toolchain/usr headers_install

find /home/charles/code/cross-compile/embedded-toolchain/usr/include/ -name ".install" -or -name "..install.cmd" | xargs rm -fv ;\

5. 編譯 glibc

進入到 build/glibc,執行

build_cc=gcc cc=mipsel-linux-gnueabi-gcc ar=mipsel-linux-gnueabi-ar ranlib=mipsel-linux-gnueabi-ranlib ../../src/glibc-2.18/configure --prefix=/usr --host=mipsel-linux --enable-add-ons --with-fp=no libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ctors_header=yes --with-tune=mips32r2 --with-arch=mips32r2 --with-headers=/home/charles/code/cross-compile/embedded-toolchain/usr/include
把步驟3生成的mipsel gcc 加入到  path:

export path=$path:/home/charles/code/cross-compile/embedded-toolchain/cross-tools/bin
執行

make

make install install_root=/home/charles/code/cross-compile/embedded-toolchain

6.編譯最後的gcc

ar=ar ldflags="-wl,-rpath=/home/charles/code/cross-compile/embedded-toolchain/cross-tools/lib" ../../src/gcc-4.7.1/configure --prefix=/home/charles/code/cross-compile/embedded-toolchain/cross-tools --target=mipsel-linux-gnueabi --with-sysroot=/home/charles/code/cross-compile/embedded-toolchain --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local --disable-multilib --disable-libssp  --disable-nls --disable-libstdcxx-pch --with-arch=mips32r2 --with-tune=mips32r2 --enable-languages=c,c++  --with-float=soft  --with-mips-plt --disable-libgomp --disable-libmudflap --enable-poison-system-directories --enable-symvers=gnu --enable-long-long --enable-threads --enable-shared --enable-lto --enable-__cxa_atexit --with-gnu-as --with-gnu-ld

再執行

make all-gcc -j10 -i -k

make all-target-libgcc

make install-gcc

make install-target-libgcc

make

make install

最後,看一下生成的gcc的資訊:

./mipsel-linux-gnueabi-gcc -v 

using built-in specs.

collect_gcc=./mipsel-linux-gnueabi-gcc

target: mipsel-linux-gnueabi

configured with: ../../src/gcc-4.7.1/configure --prefix=/home/charles/code/cross-compile/embedded-toolchain/cross-tools --target=mipsel-linux-gnueabi --with-sysroot=/home/charles/code/cross-compile/embedded-toolchain --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local --disable-multilib --disable-libssp --disable-nls --disable-libstdcxx-pch --with-float=soft --with-arch=mips32r2 --with-tune=mips32r2 --enable-languages=c,c++ --with-float=soft --with-mips-plt --disable-libgomp --disable-libmudflap --enable-poison-system-directories --enable-symvers=gnu --enable-long-long --enable-threads --enable-shared --enable-lto --enable-__cxa_atexit --with-gnu-as --with-gnu-ld

thread model: posix

gcc version 4.7.1 (gcc)

參考:

交叉編譯工具鏈製作

交叉編譯就是在乙個平台上生成另乙個平台上的可執行 二進位制。這兩個平台可以是不同的體系結構和不同的作業系統。例如,在嵌入式系統 c c 開發過程中,常常需要在 x86 x86 64 主機上編譯出可執行程式,給 arm或 powerpc 體系結構的裝置執行。交叉編譯的兩個概念 宿主機 host 編譯程...

製作交叉編譯工具鏈 1

交叉編譯環境是由編譯器 聯結器和直譯器組合成的綜合開發環境。交叉編譯工具主要包括針對目標系統的編譯器gcc 目標系統的二進位制工具binutils 目標系統的標準c庫glibc和目標系統的linux核心標頭檔案 安裝上述檔案,並設定變數 prefix 指定可執行程式的安裝路徑 執行configure...

製作交叉編譯工具鏈 2

解壓crosstool ng tar jxvf crosstool ng 1.23.0 檢查依賴,完成依賴檢查後生成makefile configure prefix home forlinx crosstool install 編譯,編譯成功後進行安裝 make make install 新增環境...