Difference between revisions of "Didj Build Environment"
(fixed make CROSS_COMPILE prefix for kernel build) |
(→Prebuilt) |
||
| Line 3: | Line 3: | ||
== Prebuilt == | == 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. | 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''' | ||
* [http://losinggeneration.homelinux.org/wp-upload/winarm-didj.tar.bz2 Windows] | * [http://losinggeneration.homelinux.org/wp-upload/winarm-didj.tar.bz2 Windows] | ||
| − | + | * [http://etharooni.polorix.net/winarm-didj.tar.bz2 (broken) Fast Windows mirror] | |
| − | + | * [http://didj.graxe.net/winarm-didj.tar.bz2 (broken) Fast Windows mirror] | |
| − | + | ||
| + | Extract to C:\ (full path to bin is C:\winarm\didj\bin) It should work in the root of any partition. | ||
| + | |||
| + | '''Ubuntu 9.10''' | ||
| + | |||
* [http://losinggeneration.homelinux.org/wp-upload/ubuntu-9.10-32bit-didj-arm-linux.tar.bz2 32 bit Ubuntu 9.10] | * [http://losinggeneration.homelinux.org/wp-upload/ubuntu-9.10-32bit-didj-arm-linux.tar.bz2 32 bit Ubuntu 9.10] | ||
| − | + | * [http://etharooni.polorix.net/ubuntu-9.10-32bit-didj-arm-linux.tar.bz2 (broken) Fast 32 bit Ubuntu 9.10 mirror] | |
| − | + | * [http://didj.graxe.net/ubuntu-9.10-32bit-didj-arm-linux.tar.bz2 (broken) Fast 32 bit Ubuntu 9.10 mirror] | |
| − | + | ||
| + | Extract to /usr/local | ||
| + | |||
| + | ''' Debian Lenny 64-bit''' | ||
| + | |||
* [http://losinggeneration.homelinux.org/wp-upload/didj-debian-lenny64.tar.bz2 64 bit Debian Lenny] | * [http://losinggeneration.homelinux.org/wp-upload/didj-debian-lenny64.tar.bz2 64 bit Debian Lenny] | ||
| − | + | * [http://didj.graxe.net/didj-debian-lenny64.tar.bz2 (broken) Fast 64 bit Debian Lenny mirror] | |
| − | + | ||
| + | Extract to /usr/local | ||
Additional mirrors would be welcomed. | Additional mirrors would be welcomed. | ||
Revision as of 18:07, 18 July 2010
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
Extract to C:\ (full path to bin is C:\winarm\didj\bin) It should work in the root of any partition.
Ubuntu 9.10
Extract to /usr/local
Debian Lenny 64-bit
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-uclibcgnueabi-
Scons
To be written.
Others
Any others you run into please document here.