OpenCores

linux mips-elf toolchain build script .. Success on Fedora 12 64bit Cross Compile

Back to bugtracker overview.

Information:
Type :: IDEA
Status :: OPENED
Assigned to :: nobody

Description:
#!/bin/bash
GCC_VER="gcc-4.0.2"
BINUTILS_VER="binutils-2.16.1"
GDB_VER="gdb-6.6"
INSIGHT_VER="insight-6.6"
TARGET="mips"
INSTALL_DIR=$HOME/mips_toolchain


CFLAGS="-g -O2 -mabi=32"
ASFLAGS=$CFLAGS


export PATH=$PATH:$INSTALL_DIR
rm -fr $INSTALL_DIR/*
mkdir $INSTALL_DIR/build
mkdir $INSTALL_DIR/src

cd $INSTALL_DIR/src
echo Downloading $BINUTILS_VER
wget http://ftp.gnu.org/pub/gnu/binutils/$BINUTILS_VER.tar.bz2
echo Uncompressing $BINUTILS_VER
tar xvfj $BINUTILS_VER.tar.bz2 > /dev/null
mv $BINUTILS_VER $INSTALL_DIR/build/$BINUTILS_VER

cd $INSTALL_DIR/build/$BINUTILS_VER
./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
make
make install

#the mips binutils now created so export the mips-elf bin path
export PATH=$PATH:$INSTALL_DIR/bin

cd $INSTALL_DIR/src
echo Downloading $GCC_VER
wget http://ftp.gnu.org/pub/gnu/gcc/$GCC_VER/$GCC_VER.tar.bz2

echo Uncompressing $GCC_VER
tar xvfj $GCC_VER.tar.bz2 > /dev/null
mv $GCC_VER $INSTALL_DIR/build/$GCC_VER

cd $INSTALL_DIR/build
./$GCC_VER/configure --prefix=$INSTALL_DIR --target=$TARGET-elf --enable-languages=c
make
make install

cd $INSTALL_DIR/src
echo Downloading $GDB_VER
wget http://ftp.gnu.org/pub/gnu/gdb/$GDB_VER.tar.bz2

echo Uncompressing gdb
tar xvfj $GDB_VER.tar.bz2 > /dev/null
mv $GDB_VER $INSTALL_DIR/build/$GDB_VER

cd $INSTALL_DIR/build/$GDB_VER
./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
make
make install

cd $INSTALL_DIR/src
echo Downloading $INSIGHT_VER
wget http://mirrors.kernel.org/sources.redhat.com/insight/releases/$INSIGHT_VER.tar.bz2

echo Uncompressing insight-gdb
tar xvfj $INSIGHT_VER.tar.bz2 > /dev/null
mv $INSIGHT_VER $INSTALL_DIR/build/$INSIGHT_VER

cd $INSTALL_DIR/build/$INSIGHT_VER
./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
make
make install

cd $HOME
tar -zcvf mips_toolchain.tgz ./mips_toolchain

Comments:

moody, paul Mar 16, 2010
Your problem is a Ubuntu GCC issue .... see here

https://wiki.kubuntu.org/CompilerFlags

Apparently the solution is to remove the -O2 flags from the CFLAGS options for GCC in the script.

CFLAGS="-g -O2 -mabi=32"
ASFLAGS=$CFLAGS

find the part of the script above and remove the -O2

... I dont have ubuntu so you will have to test.

Paul.
diouri, ali Mar 13, 2010
thanks Paul for your respond

here what I got at the end off gcc
but i dont know what should I do correct it




gcc -g -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition -DHAVE_CONFIG_H -I. -I. -I.././gcc-4.0.2/gcc -I.././gcc-4.0.2/gcc/. -I.././gcc-4.0.2/gcc/../include -I.././gcc-4.0.2/gcc/../libcpp/include \
-DTARGET_MACHINE=\"mips-elf\" \
-c .././gcc-4.0.2/gcc/collect2.c -o collect2.o
In function ‘open’,
inlined from ‘collect_execute’ at .././gcc-4.0.2/gcc/collect2.c:1580:
/usr/include/bits/fcntl2.h:51: erreur: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[1]: *** [collect2.o] Erreur 1
make[1]: quittant le répertoire « /home/theshadowx/workspace/mips_toolchain/build/gcc »
make: *** [all-gcc] Erreur 2
/bin/sh ./gcc-4.0.2/mkinstalldirs /home/theshadowx/workspace/mips_toolchain /home/theshadowx/workspace/mips_toolchain
make[1]: entrant dans le répertoire « /home/theshadowx/workspace/mips_toolchain/build/fixincludes »
rm -rf /home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools
/bin/sh .././gcc-4.0.2/fixincludes/../mkinstalldirs /home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools
mkdir -p -- /home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools
/bin/sh .././gcc-4.0.2/fixincludes/../mkinstalldirs /home/theshadowx/workspace/mips_toolchain/lib/gcc/mips-elf/4.0.2/install-tools/include
mkdir -p -- /home/theshadowx/workspace/mips_toolchain/lib/gcc/mips-elf/4.0.2/install-tools/include
/usr/bin/install -c -m 644 .././gcc-4.0.2/fixincludes/README-fixinc \
/home/theshadowx/workspace/mips_toolchain/lib/gcc/mips-elf/4.0.2/install-tools/include/README
/usr/bin/install -c fixinc.sh /home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools/fixinc.sh
/usr/bin/install -c fixincl \
/home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools/fixincl
/usr/bin/install -c mkheaders /home/theshadowx/workspace/mips_toolchain/libexec/gcc/mips-elf/4.0.2/install-tools/mkheaders
make[1]: quittant le répertoire « /home/theshadowx/workspace/mips_toolchain/build/fixincludes »
make[1]: entrant dans le répertoire « /home/theshadowx/workspace/mips_toolchain/build/gcc »
gcc -g -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition -DHAVE_CONFIG_H -I. -I. -I.././gcc-4.0.2/gcc -I.././gcc-4.0.2/gcc/. -I.././gcc-4.0.2/gcc/../include -I.././gcc-4.0.2/gcc/../libcpp/include \
-DTARGET_MACHINE=\"mips-elf\" \
-c .././gcc-4.0.2/gcc/collect2.c -o collect2.o
In function ‘open’,
inlined from ‘collect_execute’ at .././gcc-4.0.2/gcc/collect2.c:1580:
/usr/include/bits/fcntl2.h:51: erreur: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[1]: *** [collect2.o] Erreur 1
make[1]: quittant le répertoire « /home/theshadowx/workspace/mips_toolchain/build/gcc »
make: *** [install-gcc] Erreur 2
moody, paul Mar 8, 2010
Hi Ali,
your gcc may not have built if the gcc you are building with cannot find the path to the elf executables.
Put an exit command just after the following lines in the script

cd $INSTALL_DIR/build
./$GCC_VER/configure --prefix=$INSTALL_DIR --target=$TARGET-elf --enable-languages=c
make
make install
exit

This will stop the script just after gcc make and install. Examine the output to see if gcc appears to build and install OK. There could be something wrong with the path. Unfortunately I dont do error checking so the script will continue even if there is an error in one of the stages.
Let me know how you go.
diouri, ali Mar 6, 2010
hi Paul
thanks for your script, i've tried it in ubuntu 9.04 32bits, but unfortunately it doesn't work, in the folder mips_toolchain/bin/ i don't have mips-elf-gcc

i have just :
mips_toolchain/bin/mips-elf-addr2line
mips_toolchain/bin/mips-elf-ar
mips_toolchain/bin/mips-elf-as
mips_toolchain/bin/mips-elf-c++filt
mips_toolchain/bin/mips-elf-ld
mips_toolchain/bin/mips-elf-nm
mips_toolchain/bin/mips-elf-objcopy
mips_toolchain/bin/mips-elf-objdump
mips_toolchain/bin/mips-elf-ranlib
mips_toolchain/bin/mips-elf-readelf
mips_toolchain/bin/mips-elf-size
mips_toolchain/bin/mips-elf-strings
mips_toolchain/bin/mips-elf-strip
mips_toolchain/bin/tclsh8.4


during the compilation of the script there was no error

so what should i do?

thanks
moody, paul Feb 22, 2010
bootldr builds OK .... :-)

Greetings from the bootloader Feb 23 2010 09:57:59:

Waiting for binary image linked at 0x10000000
Other Menu Options:
1. Memory read word
2. Memory write word
3. Memory read byte
4. Memory write byte
5. Jump to address
6. Raw memory read
7. Raw memory write
8. Checksum
9. Dump
F. Copy 128KB from DDR to flash
>

moody, paul Feb 22, 2010
[moodz@hitmouse tools]$ make bootldr
/home/moodz/mips_toolchain/bin/mips-elf-as -o boot.o boot.asm
/home/moodz/mips_toolchain/bin/mips-elf-gcc -O2 -Wall -c -s bootldr.c
/home/moodz/mips_toolchain/bin/mips-elf-gcc -O2 -Wall -c -s no_os.c
/home/moodz/mips_toolchain/bin/mips-elf-gcc -O2 -Wall -c -s -DDLL_DISABLE ddr_init.c
/home/moodz/mips_toolchain/bin/mips-elf-ld -Ttext 0 -eentry -Map test.map -s -N -o test.axf \
boot.o bootldr.o no_os.o ddr_init.o
./convert_bin.exe
test.axf -> code.txt & test.bin
Entry=0x0 length=3340=0xd0c
cp code.txt ../vhdl
Next do make toimage for Xilinx or make tohex for Altera.

<<<<<<<<< got rid of those ld PIC errors ... woohoo !!>>>>>>
moody, paul Feb 22, 2010
this script puts the tools in $HOME/mips_toolchain/bin so modify the plasma tools Makefile to point at this location.

Post a comment:
Login to post comments!

Back to bugtracker overview.

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.