Didj Build Environment
Buildcross is able to build a working toolchain that supports C and C++.
Contents
Prebuilt
Since it can be a pain to build the cross compiler on Windows, I'm providing a prebuilt toolchain. 32 bit Ubuntu 9.10 does some incorrect things during GCC's build that causes the built to fail. So I've provide that one too.
- Windows
- Faster Windows mirror
- Extract to C:\ (full path to bin is C:\winarm\didj\bin) It should work in the root of any partition.
- 32 bit Ubuntu 9.10
- Faster 32 bit Ubuntu 9.10 mirror
- Extract to /usr/local
Additional mirrors would be welcomed.
Building
Prerequisites
- gmp (In deb based distros it's often called libgmp-dev or libgmp3-dev)
- mpfr (In deb based distros it's often called libmpfr-dev)
- GCC & Binutils
- Flex
- Bison
- Make
- Makeinfo
- patch
- diff
- And a Unix environment (Only really tested on Linux)
Steps
- git clone git://github.com/losinggeneration/buildcross.git
- cd buildcross
- sudo mkdir /usr/local/didj
- sudo chown [your username]:[any group] /usr/local/didj
- MAKE="make -j3" ./buildcross.sh didj -bl
- Replace -j3 with however many processors/cores you have +1
After that, the cross compiler should be built. You should now be able to build binaries for the Didj. I'd suggest adding /usr/local/didj/bin to your PATH. This is often in $HOME/.profile. Depending on your shell, Bash compatible shells can use:
export PATH=/usr/local/didj/bin:$PATH
Usage
The following all assumes the PATH has been correctly setup.
Simple usage
Typical usage for compiling and linking a single file:
arm-linux-uclibcgnueabi-gcc -o hello hello.c
Autotools
Typical usage for cross compiling a project that uses autotools
./configure --host=arm-linux-uclibcgnueabi make
CMake
CMake cross compiler rules
Save this file as ~/didj/didj.cmake
# this one is important SET(CMAKE_SYSTEM_NAME Linux) #this one not so much SET(CMAKE_SYSTEM_VERSION 1) # specify the cross compiler SET(CMAKE_C_COMPILER /usr/local/didj/bin/arm-linux-uclibcgnueabi-gcc) SET(CMAKE_CXX_COMPILER /usr/local/didj/bin/arm-linux-uclibcgnueabi-g++) # where is the target environment SET(CMAKE_FIND_ROOT_PATH /usr/local/didj /home/harley/didj/rootfs /home/harley/didj/custom/rootfs) # search for programs in the build host directories SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Then use this command to build it. It's better to build in a clean subdirectory in CMake projects.
mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE=~/didj/didj .. make
Linux Kernel
make ARCH=arm CROSS_COMPILE=arm-linux-uclibceabi-
Scons
To be written.
Others
Any others you run into please document here.