OESF | ELSI | pdaXrom | OpenZaurus | Zaurus Themes | Community Links | Ibiblio

IPB

Welcome Guest ( Log In | Register )

2 Pages V   1 2 >  
Reply to this topicStart new topic
> gcc 3.2
ced
post Jan 13 2004, 01:05 AM
Post #1





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



Hi,

Where can I find a FAQ/HOWTO to setup an ARM cross-compiler using gcc 3.2.x?

Ced.
Go to the top of the page
 
+Quote Post
lardman
post Jan 13 2004, 03:07 AM
Post #2





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



I've just set one up (partially at least, I didn't compile my own binutils but used the ones from an existing OZ GCC 3.x cross-toolchain to save me the effort, and my toolchain's working fine), what do you want to know?


Si
Go to the top of the page
 
+Quote Post
ced
post Jan 13 2004, 03:24 AM
Post #3





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



just installation instructions step by step... :-)
Go to the top of the page
 
+Quote Post
Richjn
post Jan 13 2004, 04:40 AM
Post #4





Group: Members
Posts: 121
Joined: 21-October 03
Member No.: 696



ced

I am in the process of setting up a gcc 3.3.2 cross compiler and am trying to follow the instructions here

http://paipai.org/~humorum/pukiwiki/pukiwi...php?ZaurusSelf2

Hope this proves of some help

Richard
Go to the top of the page
 
+Quote Post
lardman
post Jan 13 2004, 04:50 AM
Post #5





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



Right this is what I did for my toolchain:

Get the one on which I was going to base it (for the headers, various libs and binutils)

http://www.openzaurus.org/official/toolcha...s-3.3.2.tar.bz2

I extracted this toolchain so that it sits in /usr/local/arm/3.3.2 (note that it won't work from here, it should be placed in /opt/cross I think - there's a readme in the parent dir, but this is where I wanted mine to end up.

Copy /usr/local/arm/3.3.2/arm-linux/sys-include to /usr/local/arm/3.3.2/sys-include (this is what GCC expects I think, or perhaps I just did it for the hell of it, can't remember)

Extract gcc-3.3.2.tar.gz somewhere, make a build dir which is not in the source tree as it recommends then use the following configure (alter the languages to your particular liking - read the /INSTALL/ files, it tells you quite a bit, including working out which are available):

../gcc-3.3.2/configure --disable-shared --enable-languages='c,c++,f77' --target=arm-linux --prefix='/usr/local/arm/3.3.2' --with-headers=/usr/local/arm/3.3.2/arm-linux/sys-include --with-libs=' '/usr/local/arm/3.3.2/arm-linux/lib /usr/local/arm/3.3.2/lib' '

After that finishes, make, then make install and there you go.


Si

P.S. I'm sure I didn't need to specify everything as I did but it worked for me. A couple of things to note, use a fresh extract of GCC if it all goes wrong and you have to ./configure again. I don't think make distclean actually does what it says on the tin, probably also worth using a fresh


BTW for my toolchain this is what I use in my dev-arm-OZ.sh script:

=======================================
#!/bin/bash

CC=arm-linux-gcc
CXX=arm-linux-g++
CCX=arm-linux-gcc
CXXX=arm-linux-g++
COMPILER=arm-linux-gcc
LINKER=arm-linux-g++
G77=arm-linux-g77
F77=arm-linux-g77

PATH=/usr/local/arm/3.3.2/bin:/usr/local/arm/3.3.2/arm-linux/bin:$PATH

PS1='!OZ-dev-armu@h:w$ '

export PATH CC CXX CCX CXXX COMPILER LINKER G77 F77
echo "Altered environment for OZ 3.3.2 Development"
========================================
Go to the top of the page
 
+Quote Post
ced
post Jan 13 2004, 05:37 AM
Post #6





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



thx dude, I'll try that later... :-)
Go to the top of the page
 
+Quote Post
ced
post Jan 13 2004, 07:36 AM
Post #7





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



what I done so far:

- untar http://www.openzaurus.org/official/toolcha...s-3.3.2.tar.bz2 to / (unpack it in /op/cross)

- untar ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/...cc-3.3.2.tar.gz somewhere

- I didn't specify the language option because I want all the languages

CC=/opt/cross/bin/arm-linux-gcc ../gcc-3.3.2/configure --disable-shared --target=arm-linux --prefix=/opt/cross --with-headers=/opt/cross/arm-linux/sys-include --with-libs=/opt/cross/arm-linux/lib

- if I specify --with-libs="/op/cross/arm-linux/lib /opt/cross/lib" then it complained about:

CODE
Configuring zlib...

configure: warning: /opt/cross/lib: invalid host type

loading cache ../config.cache

configure: error: can only configure for one host and one target at a time

Configure in /home/cedric/upload/compiler/bluid/zlib failed, exiting.

- I get this during the make

CODE
make[1]: Entering directory `/home/cedric/upload/compiler/bluid/libiberty'

make[2]: Entering directory `/home/cedric/upload/compiler/bluid/libiberty/testsuite'

make[2]: Nothing to be done for `all'.

make[2]: Leaving directory `/home/cedric/upload/compiler/bluid/libiberty/testsuite'

make[1]: Leaving directory `/home/cedric/upload/compiler/bluid/libiberty'

make[1]: Entering directory `/home/cedric/upload/compiler/bluid/zlib'

: make; exec true "AR_FLAGS=rc" "CC_FOR_BUILD=/opt/cross/bin/arm-linux-gcc" "CFLAGS=-O2 -Wa,-mfpu=fpa11 -mcpu=xscale" "CXXFLAGS=-g -O2" "CFLAGS_FOR_BUILD=" "CFLAGS_FOR_TARGET=-O2 -O2 -Wa,-mfpu=fpa11 -mcpu=xscale" "INSTALL=/bin/sh /home/cedric/upload/compiler/gcc-3.3.2/install-sh -c" "INSTALL_DATA=/bin/sh /home/cedric/upload/compiler/gcc-3.3.2/install-sh -c -m 644" "INSTALL_PROGRAM=/bin/sh /home/cedric/upload/compiler/gcc-3.3.2/install-sh -c " "INSTALL_SCRIPT=/bin/sh /home/cedric/upload/compiler/gcc-3.3.2/install-sh -c" "LDFLAGS=" "LIBCFLAGS=-O2 -Wa,-mfpu=fpa11 -mcpu=xscale" "LIBCFLAGS_FOR_TARGET=-O2 -O2 -Wa,-mfpu=fpa11 -mcpu=xscale" "MAKE=make" "MAKEINFO=makeinfo --no-split " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "EXPECT=expect" "RUNTEST=runtest" "RUNTESTFLAGS=" "exec_prefix=/opt/cross" "infodir=/opt/cross/info" "libdir=/opt/cross/lib" "prefix=/opt/cross" "tooldir=/opt/cross/arm-linux" "AR=ar" "AS=as" "CC=/opt/cross/bin/arm-linux-gcc" "CXX=c++" "LD=ld" "LIBCFLAGS=-O2 -Wa,-mfpu=fpa11 -mcpu=xscale" "NM=nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do

make[1]: Leaving directory `/home/cedric/upload/compiler/bluid/zlib'

make[1]: Entering directory `/home/cedric/upload/compiler/bluid/fastjar'

make[1]: Leaving directory `/home/cedric/upload/compiler/bluid/fastjar'

make[1]: Entering directory `/home/cedric/upload/compiler/bluid/gcc'

./gengenrtl -h > tmp-genrtl.h

/bin/sh: line 1: ./gengenrtl: cannot execute binary file

make[1]: *** [s-genrtl] Error 126

make[1]: Leaving directory `/home/cedric/upload/compiler/bluid/gcc'

make: *** [all-gcc] Error 2



PS: I'm using RedHat 9 for my cross compile host
Go to the top of the page
 
+Quote Post
lardman
post Jan 14 2004, 08:59 AM
Post #8





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



QUOTE
CC=/opt/cross/bin/arm-linux-gcc ../gcc-3.3.2/configure --disable-shared --target=arm-linux --prefix=/opt/cross --with-headers=/opt/cross/arm-linux/sys-include --with-libs=/opt/cross/arm-linux/lib 


Are you trying to create a native ARM GCC toolchain?? Because that's what the above will try to do (unfortunatley as you've only specificed that the arm-linux-gcc should be used to compile it's probably pretty confused).

If you plan to make a native arm toolchain (not a cross toolchain), then you need to modify the script I posted above, source it before running configure, and also use --host=arm-linux probably...

If you want to make a cross-toolchain (which runs on you desktop box and creates ARM code), then get rid of the CC=.... stuff and make sure you've not sourced the script at all.


Si
Go to the top of the page
 
+Quote Post
ced
post Jan 15 2004, 05:18 AM
Post #9





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



I'm trying to create cross-toolchain, I'm a bit confused...

$ gcc --version
CODE
gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)


$ ../gcc-3.3.2/configure --disable-shared --target=arm-linux --prefix=/opt/cross --with-headers=/opt/cross/arm-linux/sys-include --with-libs=/opt/cross/arm-linux/lib
CODE
Configuring for a i686-pc-linux-gnu host.

Created "Makefile" in /home/cedric/upload/compiler/build using "mt-frag"

../gcc-3.3.2/configure: line 8: arm-linux-gcc: command not found

*** The command 'arm-linux-gcc -o conftest -g -O2   conftest.c' failed.

*** You must set the environment variable CC to a working compiler.
Go to the top of the page
 
+Quote Post
lardman
post Jan 15 2004, 05:54 AM
Post #10





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



It looks like you still have CC exported (and pointing to the arm version of GCC).

See whether 'export' indicates a CC variable.

Try opening up a new terminal and running configure again.

Another thing which may have happened is that configure has cached CC and you would therefore need to run 'make distclean' to get rid of the cache.

Try this (are you sure that not specifying the languages defaults to all, it may do but I'd check):

../gcc-3.3.2/configure --disable-shared --target=arm-linux --prefix='/opt/cross' --with-headers=/opt/cross/arm-linux/sys-include --with-libs=' '/opt/cross/arm-linux/lib /opt/cross/lib' '


Si
Go to the top of the page
 
+Quote Post
ced
post Jan 15 2004, 06:52 AM
Post #11





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



the language stuff it's stated in the readme/install file

I've started again from fresh...

unpack the cross-3.3.2
uppack the gcc3.3.2

CODE
../gcc-3.3.2/configure --disable-shared --target=arm-linux --prefix=/opt/cross --with-headers=/opt/cross/arm-linux/sys-include --with-libs=/opt/cross/arm-linux/lib


after 1/2h of compilation I get this...

CODE
make GCC_FOR_TARGET="/home/cedric/upload/compiler/build/gcc/xgcc -B/home/cedric/upload/compiler/build/gcc/ -B/opt/cross/arm-linux/bin/ -B/opt/cross/arm-linux/lib/ -isystem /opt/cross/arm-linux/include"

 BUILD_PREFIX="" BUILD_PREFIX_1="loser-"

 AR_FOR_TARGET="arm-linux-ar"

 AR_CREATE_FOR_TARGET="arm-linux-ar  rc"

 AR_FLAGS_FOR_TARGET=""

 CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long "

 RANLIB_FOR_TARGET="arm-linux-ranlib"

 RANLIB_TEST_FOR_TARGET="[ -f arm-linux-ranlib ] || ( [ "i686-pc-linux-gnu" = "arm-unknown-linux-gnu" ] && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] )"

 NM_FOR_TARGET="/opt/cross/arm-linux/bin/nm" AWK="gawk"

 LIBGCC2_CFLAGS="-O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -fomit-frame-pointer -fPIC -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED "

 INCLUDES="-I. -I. -I../../gcc-3.3.2/gcc -I../../gcc-3.3.2/gcc/. -I../../gcc-3.3.2/gcc/config -I../../gcc-3.3.2/gcc/../include"

 CONFIG_H="tconfig.h " MACHMODE_H="machmode.h machmode.def ../../gcc-3.3.2/gcc/config/arm/arm-modes.def"

 LIB1ASMSRC='arm/lib1funcs.asm'

 MAKEOVERRIDES=

 -f libgcc.mk all

make[2]: Entering directory `/home/cedric/upload/compiler/build/gcc'

for d in libgcc; do

 if [ -d $d ]; then true; else /bin/sh ../../gcc-3.3.2/gcc/mkinstalldirs $d; fi;

done

if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi

rm -rf ./libgcc.a

arm-linux-ar  rc ./libgcc.a libgcc/./_udivsi3.o libgcc/./_divsi3.o libgcc/./_umodsi3.o libgcc/./_modsi3.o libgcc/./_dvmd_lnx.o libgcc/./_muldi3.o libgcc/./_negdi2.o libgcc/./_lshrdi3.o libgcc/./_ashldi3.o libgcc/./_ashrdi3.o libgcc/./_ffsdi2.o libgcc/./_clz.o libgcc/./_cmpdi2.o libgcc/./_ucmpdi2.o libgcc/./_floatdidf.o libgcc/./_floatdisf.o libgcc/./_fixunsdfsi.o libgcc/./_fixunssfsi.o libgcc/./_fixunsdfdi.o libgcc/./_fixdfdi.o libgcc/./_fixunssfdi.o libgcc/./_fixsfdi.o libgcc/./_fixxfdi.o libgcc/./_fixunsxfdi.o libgcc/./_floatdixf.o libgcc/./_fixunsxfsi.o libgcc/./_fixtfdi.o libgcc/./_fixunstfdi.o libgcc/./_floatditf.o libgcc/./_clear_cache.o libgcc/./_trampoline.o libgcc/./__main.o libgcc/./_exit.o libgcc/./_absvsi2.o libgcc/./_absvdi2.o libgcc/./_addvsi3.o libgcc/./_addvdi3.o libgcc/./_subvsi3.o libgcc/./_subvdi3.o libgcc/./_mulvsi3.o libgcc/./_mulvdi3.o libgcc/./_negvsi2.o libgcc/./_negvdi2.o libgcc/./_ctors.o libgcc/./_divdi3.o libgcc/./_moddi3.o libgcc/./_udivdi3.o libgcc/./_umoddi3.o libgcc/./_udiv_w_sdiv.o libgcc/./_udivmoddi4.o libgcc/./unwind-dw2.o libgcc/./unwind-dw2-fde-glibc.o libgcc/./unwind-sjlj.o libgcc/./unwind-c.o libgcc/./_eprintf.o libgcc/./_bb.o libgcc/./__gcc_bcmp.o

make[2]: arm-linux-ar: Command not found

make[2]: *** [libgcc.a] Error 127

make[2]: Leaving directory `/home/cedric/upload/compiler/build/gcc'

make[1]: *** [libgcc.a] Error 2

make[1]: Leaving directory `/home/cedric/upload/compiler/build/gcc'

make: *** [all-gcc] Error 2
Go to the top of the page
 
+Quote Post
lardman
post Jan 15 2004, 07:56 AM
Post #12





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



Oops, yes that's normal. I forgot about it.

In the command below make sure you only add the path to the bin directory which holds the files which are called arm-linux-*, otherwise the compilation will break.

So do something like:

'export PATH=$PATH:/opt/cross/arm-linux/bin'

Though it might be:

'export PATH=$PATH:/opt/cross/bin'

I'm not in front of my Linux box at the moment so I can't tell you. After you've done this just run 'make' again and it will pick off where it left off.

Sorry,


Si
Go to the top of the page
 
+Quote Post
ced
post Jan 16 2004, 12:28 AM
Post #13





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



export PATH=$PATH:/opt/cross/bin did the trick!

Thanks a lot.
Ced.
Go to the top of the page
 
+Quote Post
ced
post Jan 16 2004, 01:51 AM
Post #14





Group: Members
Posts: 225
Joined: 9-December 03
Member No.: 1,104



I've try to compile a simple Qtopia example with my new cross-compiler and it failed to find the qtopia library (undefined reference to <widget name>)

the only thing I've changed is my PATH:

from -> PATH=/opt/Embedix/tools/bin:$PATH
to -> PATH=/opt/cross/bin:$PATH

It's ok to compile an ARM binary using the old cross-compiler (gcc 2.95).
Do I need to re-compile the qtopia library using gcc3? or do I need to do something else?


Is it possible to upgrade the default Sharp ROM (1.32) with the glibc 2.3.2? (like the openzaurus 3.3.6 version). To do that, do I need to create a custom rom by recompiling every thing with gcc3?
Go to the top of the page
 
+Quote Post
lardman
post Jan 16 2004, 02:53 AM
Post #15





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



Glad you've got it all working.

QUOTE
I've try to compile a simple Qtopia example with my new cross-compiler and it failed to find the qtopia library (undefined reference to <widget name>) 


I presume it's complaining that it can't find the qtopia related (libqpe, libopie, whatever) arm libs. You'll probably need to either compile it all yourself (with gcc 3.x) or copy the libs over from your Z (which have already been compiled with gcc 3.x). I don't know much about this, I generally only do command line stuff. Perhaps drop Mickeyl a line?

QUOTE
It's ok to compile an ARM binary using the old cross-compiler (gcc 2.95). 


You shouldn't compile with 2.95 unless you want to use compat libs.

QUOTE
Is it possible to upgrade the default Sharp ROM (1.32) with the glibc 2.3.2? (like the openzaurus 3.3.6 version). To do that, do I need to create a custom rom by recompiling every thing with gcc3?


You would have to make a new ROM as libc can't be changed on the fly. All of the C++ stuff would bneed to be recompiled due to name-mangling issues, but the commandline stuff would probably be okay as libc seems to be backwards compatible.


Si
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 20th December 2014 - 09:24 PM