使用 crosstool-NG 產生 toolchain
這裡是使用 1.18 版來做
預設都在 HOME 資料夾裡
安裝 crosstool-ng
# cd ~
# wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.18.0.tar.bz2
# tar xf crosstool-ng-1.18.0.tar.bz2
# cd crosstool-ng-1.18.0
# ./configure --prefix=`pwd`/crosstool
# make && make install
# export PATH="${PATH}:`pwd`/crosstool/bin"
# ct-ng help
This is crosstool-NG version 1.18.0
表示安裝成功...
安裝 cross compilier toolchain
# cd ~
# mkdir crosstool
# cd crosstool
# ct-ng list-samples --> 可以看到支援的平台
[G.X] arm-cortex_a15-linux-gnueabi
[G..] arm-cortex_a8-linux-gnueabi
[G..] arm-davinci-linux-gnueabi
[G..] arm-unknown-eabi
[G..] arm-unknown-linux-gnueabi
[G.X] arm-unknown-linux-uclibcgnueabi
[G..] x86_64-unknown-linux-gnu
[G..] x86_64-unknown-linux-uclibc
[G.X] x86_64-unknown-mingw32
# ct-ng show-arm-unknown-linux-gnueabi --> toolchain 環境
OS : linux-3.7.3
Companion libs : gmp-4.3.2 mpfr-2.4.2 libelf-0.8.13
binutils : binutils-2.19.1a
C compiler : gcc-4.3.2 (C,C++,Fortran,Java)
C library : glibc-2.9 (threads: nptl)
Tools : dmalloc-5.5.2 duma-2_5_15 gdb-6.8a ltrace-0.5.3 strace-4.5.19
# ct-ng arm-unknown-linux-gnueabi
***********************************************************
Initially reported by: Alexander BIGGA
URL: http://sourceware.org/ml/crossgcc/2008-06/msg00031.html
***********************************************************
Now configured for "arm-unknown-linux-gnueabi"
若沒出現 也可以手動 cp ../crosstool-ng-1.18.0/samples/arm-unknown-linux-gnueabi/crosstool.config .config
# mkdir ~/src
# mkdir ~/x-tools
先建立 src & x-tools 是因為 ct-ng 預設目錄就在這裡,
可在 menuconfig ---> Paths and misc options 裡修改
(${HOME}/src) Local tarballs directory
(${HOME}/x-tools/${CT_TARGET}) Prefix directory
~/src 是放置下載的檔案
~/x-tools 是放置 toolchain
# ct-ng menuconfig
Target options -> Architecture level -> armv5te # marvell 88F6282
# ct-ng build --> 慢慢等吧@@@@
完成後會安裝再 ~/x-tools 裡
# ll ~/x-tools/
arm-unknown-linux-gnueabi
Toolchain options -> (unknown) Tuple's vendor string
如果把 (unknown) 修改成 (XXX) build 完就會變成 arm-XXX-linux-gnueabi
# ../x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc -v
Using built-in specs.
Target: arm-unknown-linux-gnueabi
Configured with: /home/shyuan/crosstool/.build/src/gcc-4.3.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/home/shyuan/x-tools/arm-unknown-linux-gnueabi --with-sysroot=/home/shyuan/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --enable-languages=c,c++,fortran,java --with-arch=armv5te --with-float=soft --with-pkgversion='crosstool-NG 1.18.0' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-gmp=/home/shyuan/crosstool/.build/arm-unknown-linux-gnueabi/buildtools --with-mpfr=/home/shyuan/crosstool/.build/arm-unknown-linux-gnueabi/buildtools --enable-threads=posix --enable-target-optspace --disable-nls --disable-multilib --with-local-prefix=/home/shyuan/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.3.2 (crosstool-NG 1.18.0)
# ../x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc hello.c -o hello
# file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.7.3, not stripped
把 hello 放到 target board, 看看是否可以正常執行.
gdb 有錯誤時, 記得安裝 expat or python
[INFO ] =================================================================
[INFO ] Installing cross-gdb
[EXTRA] Configuring cross-gdb
[EXTRA] Building cross-gdb
[ERROR] configure: error: expat is missing or unusable
[ERROR] make[2]: *** [configure-gdb] Error 1
[ERROR] make[1]: *** [all] Error 2
[INFO ] =================================================================
[INFO ] Installing cross-gdb
[EXTRA] Configuring cross-gdb
[EXTRA] Building cross-gdb
[ERROR] configure: error: python is missing or unusable
[ERROR] make[2]: *** [configure-gdb] Error 1
[ERROR] make[1]: *** [all] Error 2
sudo yum install expat
sudo yum install expat-devel
sudo yum install python
sudo yum install python-devel
reference:
http://crosstool-ng.org/
附上 ct-ng build 完整的訊息
[INFO ] Performing some trivial sanity checks
[INFO ] Build started 20130814.151941
[INFO ] Building environment variables
[EXTRA] Preparing working directories
[EXTRA] Installing user-supplied crosstool-NG configuration
[EXTRA] =================================================================
[EXTRA] Dumping internal crosstool-NG configuration
[EXTRA] Building a toolchain for:
[EXTRA] build = i686-pc-linux-gnu
[EXTRA] host = i686-pc-linux-gnu
[EXTRA] target = arm-unknown-linux-gnueabi
[EXTRA] Dumping internal crosstool-NG configuration: done in 0.08s (at 00:01)
[INFO ] =================================================================
[INFO ] Retrieving needed toolchain components' tarballs
[INFO ] Retrieving needed toolchain components' tarballs: done in 0.10s (at 00:01)
[INFO ] =================================================================
[INFO ] Extracting and patching toolchain components
[INFO ] Extracting and patching toolchain components: done in 0.15s (at 00:02)
[INFO ] =================================================================
[INFO ] Installing GMP for host
[EXTRA] Configuring GMP
[EXTRA] Building GMP
[EXTRA] Installing GMP
[INFO ] Installing GMP for host: done in 47.82s (at 00:49)
[INFO ] =================================================================
[INFO ] Installing MPFR for host
[EXTRA] Configuring MPFR
[EXTRA] Building MPFR
[EXTRA] Installing MPFR
[INFO ] Installing MPFR for host: done in 13.31s (at 01:03)
[INFO ] =================================================================
[INFO ] Installing binutils for host
[EXTRA] Configuring binutils
[EXTRA] Building binutils
[EXTRA] Installing binutils
[INFO ] Installing binutils for host: done in 33.41s (at 01:36)
[INFO ] =================================================================
[INFO ] Installing pass-1 core C compiler
[EXTRA] Configuring gcc
[EXTRA] Building gcc
[EXTRA] Installing gcc
[INFO ] Installing pass-1 core C compiler: done in 58.56s (at 02:35)
[INFO ] =================================================================
[INFO ] Installing kernel headers
[EXTRA] Installing kernel headers
[EXTRA] Checking installed headers
[INFO ] Installing kernel headers: done in 5.10s (at 02:40)
[INFO ] =================================================================
[INFO ] Installing C library headers & start files
[EXTRA] Configuring C library
[EXTRA] Installing C library headers
[EXTRA] Installing C library start files
[INFO ] Installing C library headers & start files: done in 32.80s (at 03:13)
[INFO ] =================================================================
[INFO ] Installing pass-2 core C compiler
[EXTRA] Configuring gcc
[EXTRA] Building gcc
[EXTRA] Installing gcc
[INFO ] Installing pass-2 core C compiler: done in 69.18s (at 04:22)
[INFO ] =================================================================
[INFO ] Installing C library
[EXTRA] Configuring C library
[EXTRA] Building C library
[EXTRA] Installing C library
[09:21] -
[INFO ] Installing C library: done in 360.72s (at 10:23)
[INFO ] =================================================================
[INFO ] Installing final compiler
[EXTRA] Configuring gcc
[EXTRA] Building gcc
[EXTRA] Installing gcc
[INFO ] Installing final compiler: done in 1044.37s (at 27:47)
[INFO ] =================================================================
[INFO ] Installing libelf for the target
[EXTRA] Configuring libelf
[EXTRA] Building libelf
[EXTRA] Installing libelf
[INFO ] Installing libelf for the target: done in 4.54s (at 27:52)
[INFO ] =================================================================
[INFO ] Installing binutils for target
[EXTRA] Configuring binutils for target
[EXTRA] Building binutils' libraries (libiberty bfd) for target
[EXTRA] Installing binutils' libraries (libiberty bfd) for target
[INFO ] Installing binutils for target: done in 42.37s (at 28:34)
[INFO ] =================================================================
[INFO ] Installing dmalloc
[EXTRA] Configuring dmalloc
[EXTRA] Building dmalloc
[EXTRA] Installing dmalloc
[INFO ] Installing dmalloc: done in 7.10s (at 28:41)
[INFO ] =================================================================
[INFO ] Installing D.U.M.A.
[EXTRA] Copying sources
[EXTRA] Building libraries 'libduma.a libduma.so.0.0.0'
[EXTRA] Installing libraries 'libduma.a libduma.so.0.0.0'
[EXTRA] Installing shared library link
[EXTRA] Installing wrapper script
[INFO ] Installing D.U.M.A.: done in 2.13s (at 28:43)
[INFO ] =================================================================
[INFO ] Installing cross-gdb
[EXTRA] Configuring cross-gdb
[EXTRA] Building cross-gdb
[EXTRA] Installing cross-gdb
[INFO ] Installing cross-gdb: done in 86.44s (at 30:10)
[INFO ] =================================================================
[INFO ] Installing native gdb
[EXTRA] Building static target ncurses
[EXTRA] Building static target expat
[EXTRA] Configuring native gdb
[EXTRA] Building native gdb
[EXTRA] Installing native gdb
[INFO ] Installing native gdb: done in 141.24s (at 32:31)
[INFO ] =================================================================
[INFO ] Installing gdbserver
[EXTRA] Configuring gdbserver
[EXTRA] Building gdbserver
[EXTRA] Installing gdbserver
[INFO ] Installing gdbserver: done in 5.42s (at 32:36)
[INFO ] =================================================================
[INFO ] Installing ltrace
[EXTRA] Copying sources to build dir
[EXTRA] Configuring ltrace
[EXTRA] Building ltrace
[EXTRA] Installing ltrace
[INFO ] Installing ltrace: done in 2.85s (at 32:39)
[INFO ] =================================================================
[INFO ] Installing strace
[EXTRA] Configuring strace
[EXTRA] Building strace
[EXTRA] Installing strace
[INFO ] Installing strace: done in 11.68s (at 32:51)
[INFO ] =================================================================
[INFO ] Cleaning-up the toolchain's directory
[INFO ] Stripping all toolchain executables
[EXTRA] Installing the populate helper
[EXTRA] Installing a cross-ldd helper
[EXTRA] Creating toolchain aliases
[EXTRA] Removing access to the build system tools
[INFO ] Cleaning-up the toolchain's directory: done in 1.27s (at 32:52)
[INFO ] Build completed at 20130814.155233
[INFO ] (elapsed: 32:52.39)
[INFO ] Finishing installation (may take a few seconds)...
留言
張貼留言