Building GCC4

From wiki.gp2x.org

Just notes for now

Download these to your downloads directory

  • binutils-2.16.1.tar.bz2
  • gcc-4.0.2.tar.bz2
  • glibc-2.3.5.tar.bz2
  • glibc-linuxthreads-2.3.5.tar.bz2


use the ME kernel source, you must make menuconfig and make dep using the ME gcc-2.95.3 to get usable headers

if you don't have the ME kernel, try Kernel Headers, don't forget to change the KERNEL_DIR in the script.

Minimal patch for glibc: glibc-2.3.5-arm.patch. Note this is downloaded and applied automatically.

where i cribbed most of the patches: 0218363205270.patch.


Here's a first attempt at a script (it works for me):

# Your target binary prefix
TARGET=arm-linux-gnu

# Your installation prefix
PREFIX=/usr/local/open2x

# Directory where you keep your tarballs 
DOWNLOADS=/usr/portage/distfiles

KERNEL_DIR=./linux-mmsp2 


# check md5s ??

# install binutils
tar xjf ${DOWNLOADS}/binutils-2.16.1.tar.bz2 
cd binutils-2.16.1/
./configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${PREFIX} || exit  
make || exit 
make install
cd ..
echo --- binutils all done ---


# update our path for the new programs we just installed
export PATH=${PREFIX}/bin:$PATH


# you should have already make dep in the kernel using the gcc 2.9.5 tools
# do this manually for now
#cd ${KERNEL_DIR}
#make menuconfig
#make dep
#cd .. 
mkdir -p ${PREFIX}/include
mkdir -p ${PREFIX}/${TARGET}/include
cp -r ${KERNEL_DIR}/include/linux ${PREFIX}/include   || exit
cp -r ${KERNEL_DIR}/include/asm-arm ${PREFIX}/include/asm
cp -r ${KERNEL_DIR}/include/linux ${PREFIX}/${TARGET}/include 
cp -r ${KERNEL_DIR}/include/asm-arm ${PREFIX}/${TARGET}/include/asm


# extract gcc
tar xjf ${DOWNLOADS}/gcc-4.0.2.tar.bz2 
mkdir gcc-build
cd gcc-build

# make a minial gcc
../gcc-4.0.2/configure --disable-shared --enable-languages=c --without-headers --disable-threads \
    --target=${TARGET}  --prefix=${PREFIX}  || exit 
make all-gcc || exit
make install-gcc || exit
cd ..


# install all of glibc

# get the glibc patch 
wget http://www.oddsoftware.net/gp2x/glibc-2.3.5-arm.patch

# glibc headers
## untar glibc
tar xjf ${DOWNLOADS}/glibc-2.3.5.tar.bz2
## untar linuxthreads
cd glibc-2.3.5
tar xjf ${DOWNLOADS}/glibc-linuxthreads-2.3.5.tar.bz2
## apply patch
patch -p1 < ../glibc-2.3.5-arm.patch    || exit
cd .. 
mkdir glibc-build
cd glibc-build
# configure
../glibc-2.3.5/configure --enable-add-ons=linuxthreads --host=${TARGET}  --prefix=${PREFIX} \
    --with-headers=${PREFIX}/${TARGET}/include  || exit
make cross-compiling=yes   || exit
make install_root=${PREFIX} prefix="" install 
make install_root=${PREFIX}/${TARGET} prefix="" install 

# build full gcc
cd ..
rm -rf gcc-build 
mkdir gcc-build
cd gcc-build

# build and install a real gcc
pwd
../gcc-4.0.2/configure --target=${TARGET}  --prefix=${PREFIX}  --enable-languages=c,c++,objc  --with-cross-host || exit
make TARGET_CONFIGARGS='--with-cross-host=arm-linux-gnu --host=arm-linux-gnu'  || exit 
make TARGET_CONFIGARGS='--with-cross-host=arm-linux-gnu --host=arm-linux-gnu' install


wget -O hello.c http://www.oddsoftware.net/gp2x/hello.c 
wget -O hello.cpp http://www.oddsoftware.net/gp2x/hello.cpp
echo Verifying the C compiler
echo ${TARGET}-gcc -shared -o hello-c hello.c
${TARGET}-gcc -shared -o hello-c hello.c
echo Verifying the C compiler
echo ${TARGET}-g++ -shared -o hello-cpp hello.cpp
${TARGET}-g++ -shared -o hello-cpp hello.cpp


Whew :)

GP2X Wikipedia.jpgThis page needs to be cleaned up.
3rd person, NPoV, helpfulness, then link to this page
Personal tools