CHDK Wiki
Advertisement

This page is about installing a buildenvironment with the gcc 4.3.3 compiler (newest at the time of this page creation). Originally this page used a (slightly modified or fixed) version 2.19.1 of binutils, but since it didn't work, the page is being modified to use version 2.18.

It has been tested and it seems to be able to build working images!

Here is the original for older gcc: Compiling_CHDK_under_Linux

Below is how I do it with Ubuntu GNU/Linux 8.10:

Some steps are common, so instead of reproducing it here, I just refer you to the relavant section on the page Compiling_CHDK_under_Linux.

However, some of it I have copied.

Follow the steps for getting the source.

Get the sources of gcc and binutils from a GNU repository. Decide where the cross compiler will be on your computer.

Create some directories, and modify your path to use the cross compiler and binutils
 > mkdir ~/arm-elf
 > export PATH=${HOME}/arm-elf/bin:$PATH
 > mkdir ~/wa
 > cd ~/wa
Create a place for downloads, and download some stuff you will need. I have chosen some random mirrors here, you are free to choose whatever mirror is closer to you.

Here are some mirrors: gcc mirrors, gmplib mirrors, mpfr mirrors (There appears to be only one mirror for mpfr at this time).

 > mkdir down
 > cd down
 > wget ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-4.3.3/gcc-4.3.3.tar.bz2
 > wget http://ftp.sunet.se/pub/gnu/gmp/gmp-4.2.4.tar.bz2
 > wget http://www.mpfr.org/mpfr-current/mpfr-2.4.0.tar.bz2
 > wget http://ftp.download-by.net/gnu/gnu/binutils/binutils-2.18.tar.bz2
Unpack and prepare sources.
 > cd ..
 > for zipped in down/* ; do tar xjf $zipped ; done # Note: This may take a while.
 > ln -s $(pwd)/gmp-4.2.4 gcc-4.3.3/gmp
 > ln -s $(pwd)/mpfr-2.4.0 gcc-4.3.3/mpfr
Now we're ready to build binutils
 > cd binutils-2.18/
 > ./configure --srcdir=../binutils-2.18 --target=arm-elf --prefix=${HOME}/arm-elf --disable-werror
 > make -j
 > make install
 > cd ..

Its nessesary for me to pass the "--disable-werror" flag to configure, since I use gcc version 4.3.3. Somewhere between version 4.1.2 and 4.3.3 gcc started producing some new warnings, and the binutils code doesn't avoid those yet. Since I doubt it will harm I included the flag above to enable gcc 4.3.3 users to compile binutils without errors.

Configure gcc (Thanks to Geekmug User:Geekmug/Compiling_CHDK_under_Windows#Building_gcc)
 > ed gcc-4.3.3/gcc/config/arm/t-arm-elf << EOF
 > /MULTILIB_OPTIONS/s/^M/# M/
 > /MULTILIB_DIRNAMES/s/^M/# M/
 > /mno-thumb-interwork/s/^# //
 > /normal interwork/s/^# //
 > wq
 > EOF
Compile gcc
 > mkdir gcc-4.3.3-arm-elf && cd gcc-4.3.3-arm-elf
 > ../gcc-4.3.3/configure --srcdir=../gcc-4.3.3 --target=arm-elf \
    --enable-multilib --enable-languages=c --enable-clocale=gnu \
    --disable-libm --disable-libc --disable-threads \
    --disable-nls --disable-libssp --disable-intl \
    --with-cpu=arm9 --with-newlib --prefix=${HOME}/arm-elf
 > (unset LIBRARY_PATH; unset CFLAGS; make -j2 && make install) # Change "-j2" if you don't have two cores

Thats it! You should now have a working buildenvironment, and you can continue from "Compiling the CHDK." at Compiling_CHDK_under_Linux.

Here is the whole process for the impatient:

mkdir ~/arm-elf
export PATH=${HOME}/arm-elf/bin:$PATH
mkdir ~/wa
cd ~/wa

mkdir down
cd down
wget ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-4.3.3/gcc-4.3.3.tar.bz2
wget http://ftp.sunet.se/pub/gnu/gmp/gmp-4.2.4.tar.bz2
wget http://www.mpfr.org/mpfr-current/mpfr-2.4.0.tar.bz2
wget http://ftp.download-by.net/gnu/gnu/binutils/binutils-2.18.tar.bz2

cd ..
for zipped in down/* ; do tar xjf $zipped ; done # Note: This may take a while.
ln -s $(pwd)/gmp-4.2.4 gcc-4.3.3/gmp
ln -s $(pwd)/mpfr-2.4.0 gcc-4.3.3/mpfr

cd binutils-2.18/
./configure --srcdir=../binutils-2.18 --target=arm-elf --prefix=${HOME}/arm-elf --disable-werror
make -j
make install
cd ..

ed gcc-4.3.3/gcc/config/arm/t-arm-elf << EOF
/MULTILIB_OPTIONS/s/^M/# M/
/MULTILIB_DIRNAMES/s/^M/# M/
/mno-thumb-interwork/s/^# //
/normal interwork/s/^# //
wq
EOF

mkdir gcc-4.3.3-arm-elf && cd gcc-4.3.3-arm-elf
../gcc-4.3.3/configure --srcdir=../gcc-4.3.3 --target=arm-elf \
 --enable-multilib --enable-languages=c --enable-clocale=gnu \
 --disable-libm --disable-libc --disable-threads \
 --disable-nls --disable-libssp --disable-intl \
 --with-cpu=arm9 --with-newlib --prefix=${HOME}/arm-elf
(unset LIBRARY_PATH; unset CFLAGS; make -j2 && make install) # Change "-j2" if you don't have two cores
Advertisement