Difference between revisions of "Didj crosstool-NG Build Environment"
Line 1: | Line 1: | ||
'''Background''' | '''Background''' | ||
− | I have used these instuctions in the past to successfully build toolchains for Didj. They are based on instructions I originally found at http://blog.leshak.ru/english/pages/how-to-build-cross-toolchain-arm-uclibc-eabi-using-crosstool-ng/ | + | I have used these instuctions in the past to successfully build uclibc eabi toolchains for Didj. They are based on instructions I originally found at http://blog.leshak.ru/english/pages/how-to-build-cross-toolchain-arm-uclibc-eabi-using-crosstool-ng/ |
(That site was not responding as of this writing). | (That site was not responding as of this writing). |
Revision as of 17:53, 8 August 2010
Background
I have used these instuctions in the past to successfully build uclibc eabi toolchains for Didj. They are based on instructions I originally found at http://blog.leshak.ru/english/pages/how-to-build-cross-toolchain-arm-uclibc-eabi-using-crosstool-ng/
(That site was not responding as of this writing).
Download and unpack crosstool-NG (latest version 1.7.1 as of 17 July 2010)
cd ~
wget http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.7.1.tar.bz2
tar -xjvf crosstool-ng-1.7.1.tar.bz2
cd crosstool-ng-1.7.1
Configure and install
./configure --prefix=$HOME/ctng
make
make install
Add the path to the ct-ng
export PATH=$PATH:$HOME/ctng/bin
Create a temporary folder for the assembly of the package
cd ~
mkdir toolchain-build
cd toolchain-build
Copy preconfigured config files
cp ../ctng/lib/ct-ng-1.7.1/samples/arm-unknown-linux-uclibcgnueabi/* .
mv crosstool.config .config
If necessary, you can change the configuration (but it usually works fine without changes)
ct-ng menuconfig
You can usually just change the path to the cross-toolchain
nano .config
Configure CT_PREFIX_DIR to change the path to the cross-toolchain
CT_PREFIX_DIR="/opt/ctng"
Run the compilation, get a coffee - have lunch, etc. (after “.” you can specify the number of concurrently running tasks. Set it to equal the number of CPU cores in your system)
ct-ng build.4
An example log of a successful compilation: (There is one more step after this finishes)
$ ct-ng build.4
[INFO ] Build started 20090406.091909
[INFO ] Checking environment sanity
[INFO ] Building environment variables
[WARN ] Directory '/home/dev/src' does not exist. Will not save downloaded tarballs to local storage.
[EXTRA] Preparing working directories
[WARN ] You did not specify the build system. That's OK, I can guess...
[EXTRA] Installing user-supplied crosstool-NG configuration
[EXTRA] =================================================================
[EXTRA] Dumping internal crosstool-NG configuration
[EXTRA] Building a toolchain for:
[EXTRA] build = i486-linux-gnu
[EXTRA] host = i486-linux-gnu
[EXTRA] target = arm-unknown-linux-uclibcgnueabi
[EXTRA] Dumping internal crosstool-NG configuration: done in 0.06s (at 00:01)
[INFO ] =================================================================
[INFO ] Retrieving needed toolchain components' tarballs
[EXTRA] Retrieving 'linux-2.6.26.8'
[EXTRA] Retrieving 'gmp-4.2.4'
[EXTRA] Retrieving 'mpfr-2.3.2'
[EXTRA] Retrieving 'binutils-2.19'
[EXTRA] Retrieving 'gcc-4.3.2'
[EXTRA] Retrieving 'uClibc-0.9.30'
[EXTRA] Retrieving 'libelf-0.8.10'
[EXTRA] Retrieving 'sstrip'
[EXTRA] Retrieving 'dmalloc-5.5.2'
[EXTRA] Retrieving 'duma_2_5_14'
[EXTRA] Retrieving 'gdb-6.8'
[EXTRA] Retrieving 'ncurses-5.6'
[EXTRA] Retrieving 'ltrace_0.5.orig'
[EXTRA] Retrieving 'strace-4.5.17'
[INFO ] Retrieving needed toolchain components' tarballs: done in 762.14s (at 12:43)
[INFO ] =================================================================
[INFO ] Extracting and patching toolchain components
[EXTRA] Extracting and patching 'linux-2.6.26.8'
[EXTRA] Extracting and patching 'gmp-4.2.4'
[EXTRA] Extracting and patching 'mpfr-2.3.2'
[EXTRA] Extracting and patching 'binutils-2.19'
[EXTRA] Extracting and patching 'gcc-4.3.2'
[EXTRA] Extracting and patching 'uClibc-0.9.30'
[EXTRA] Extracting and patching 'libelf-0.8.10'
[EXTRA] Extracting and patching 'dmalloc-5.5.2'
[EXTRA] Extracting and patching 'duma-2_5_14'
[EXTRA] Extracting and patching 'gdb-6.8'
[EXTRA] Extracting and patching 'ncurses-5.6'
[EXTRA] Extracting and patching 'ltrace-0.5'
[EXTRA] Extracting and patching 'strace-4.5.17'
[INFO ] Extracting and patching toolchain components: done in 98.05s (at 14:21)
[INFO ] =================================================================
[INFO ] Checking C library configuration
[EXTRA] Munging uClibc configuration
[INFO ] Checking C library configuration: done in 0.14s (at 14:21)
[INFO ] =================================================================
[INFO ] Installing kernel headers
[EXTRA] Installing kernel headers
[EXTRA] Checking installed headers
[INFO ] Installing kernel headers: done in 20.49s (at 14:42)
[INFO ] =================================================================
[INFO ] Installing GMP
[EXTRA] Configuring GMP
[EXTRA] Building GMP
[EXTRA] Checking GMP
[EXTRA] Installing GMP
[INFO ] Installing GMP: done in 39.33s (at 15:21)
[INFO ] =================================================================
[INFO ] Installing MPFR
[EXTRA] Configuring MPFR
[EXTRA] Building MPFR
[EXTRA] Checking MPFR
[EXTRA] Installing MPFR
[INFO ] Installing MPFR: done in 35.88s (at 15:57)
[INFO ] =================================================================
[INFO ] Installing binutils
[EXTRA] Configuring binutils
[EXTRA] Building binutils
[EXTRA] Installing binutils
[INFO ] Installing binutils: done in 34.51s (at 16:31)
[INFO ] =================================================================
[INFO ] Installing C library headers
[EXTRA] Copying sources to build dir
[EXTRA] Applying configuration
[EXTRA] Building headers
[EXTRA] Installing headers
[INFO ] Installing C library headers: done in 6.29s (at 16:38)
[INFO ] =================================================================
[INFO ] Installing static core C compiler
[EXTRA] Configuring static core C compiler
[EXTRA] Building static core C compiler
[EXTRA] Installing static core C compiler
[INFO ] Installing static core C compiler: done in 92.64s (at 18:10)
[INFO ] =================================================================
[INFO ] Installing C library
[EXTRA] Copying sources to build dir
[EXTRA] Applying configuration
[EXTRA] Building C library
[EXTRA] Installing C library
[INFO ] Installing C library: done in 76.73s (at 19:27)
[INFO ] =================================================================
[INFO ] Installing final compiler
[EXTRA] Configuring final compiler
[EXTRA] Building final compiler
[EXTRA] Installing final compiler
[INFO ] Installing final compiler: done in 1408.53s (at 42:56)
[INFO ] =================================================================
[INFO ] Finishing C library
[EXTRA] Copying sources to build dir
[EXTRA] Applying configuration
[EXTRA] Installing C library host utils
[INFO ] Finishing C library: done in 7.85s (at 43:04)
[INFO ] =================================================================
[INFO ] Installing GMP for the target
[EXTRA] Configuring GMP
[EXTRA] Building GMP
[EXTRA] Installing GMP
[INFO ] Installing GMP for the target: done in 27.50s (at 43:31)
[INFO ] =================================================================
[INFO ] Installing MPFR for the target
[EXTRA] Configuring MPFR
[EXTRA] Building MPFR
[EXTRA] Installing MPFR
[INFO ] Installing MPFR for the target: done in 12.29s (at 43:44)
[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 46.33s (at 44:30)
[INFO ] =================================================================
[INFO ] Installing libelf
[EXTRA] Configuring libelf
[EXTRA] Building libelf
[EXTRA] Installing libelf
[INFO ] Installing libelf: done in 10.04s (at 44:40)
[INFO ] =================================================================
[INFO ] Installing sstrip
[EXTRA] Building sstrip
[EXTRA] Installing sstrip
[INFO ] Installing sstrip: done in 0.17s (at 44:40)
[INFO ] =================================================================
[INFO ] Installing dmalloc
[EXTRA] Configuring dmalloc
[EXTRA] Building dmalloc
[EXTRA] Installing dmalloc
[INFO ] Installing dmalloc: done in 6.88s (at 44:47)
[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 1.72s (at 44:49)
[INFO ] =================================================================
[INFO ] Installing cross-gdb
[EXTRA] Configuring cross-gdb
[EXTRA] Building cross-gdb
[EXTRA] Installing cross-gdb
[INFO ] Installing cross-gdb: done in 90.94s (at 46:20)
[INFO ] =================================================================
[INFO ] Installing native gdb
[INFO ] =================================================================
[INFO ] Installing ncurses library
[EXTRA] Configuring ncurses
[EXTRA] Building ncurses
[EXTRA] Installing ncurses
[INFO ] Installing ncurses library: done in 61.44s (at 47:21)
[EXTRA] Configuring native gdb
[EXTRA] Building native gdb
[EXTRA] Installing native gdb
[INFO ] Installing native gdb: done in 170.15s (at 49:10)
[INFO ] =================================================================
[INFO ] Installing gdbserver
[EXTRA] Configuring gdbserver
[EXTRA] Building gdbserver
[EXTRA] Installing gdbserver
[INFO ] Installing gdbserver: done in 5.70s (at 49:16)
[INFO ] =================================================================
[INFO ] Installing ltrace
[EXTRA] Copying sources to build dir
[EXTRA] Configuring ltrace
[EXTRA] Building ltrace
[EXTRA] Installing ltrace
[INFO ] Installing ltrace: done in 5.10s (at 49:21)
[INFO ] =================================================================
[INFO ] Installing strace
[EXTRA] Configuring strace
[EXTRA] Building strace
[EXTRA] Installing strace
[INFO ] Installing strace: done in 15.81s (at 49:37)
[INFO ] =================================================================
[EXTRA] Installing the populate helper
[EXTRA] Creating toolchain aliases
[INFO ] Removing installed documentation
[INFO ] Build completed at 20090406.100846
[INFO ] (elapsed: 49:36.55)
[INFO ] Finishing installation (may take a few seconds)...
[49:37] $
Last step: Create a file named 'crosscompile' with the contents below. Whenever you want to compile anything for the device, enter 'source crosscompile' first to set the environment variables.
export ARCH=arm
export CC=arm-linux-uclibcgnueabi-gcc
export CXX=arm-linux-uclibcgnueabi-gcc
export CROSS_COMPILE=arm-linux-uclibcgnueabi-
export PATH=/opt/ctng/bin:$PATH
export PROJECT_PATH=[YOUR PATH TO THE SOURCE TREE]/Didj-Linux-4222-20090422-1236
export TARGET_MACH=LF_LF1000
export ROOTFS_PATH=[YOUR PATH TO THE SOURCE TREE]/Didj-Linux-4222-20090422-1236/target/didj-rootfs
export RELEASE_PATH=[YOUR PATH TO THE SOURCE TREE]/Didj-Linux-4222-20090422-1236/target/release
export TFTP_PATH=[YOUR PATH TO THE SOURCE TREE]/Didj-Linux-4222-20090422-1236/target/tftp
export EROOTFS_PATH=[YOUR PATH TO THE SOURCE TREE]]/Didj-Linux-4222-20090422-1236/target/erootfs.stage