This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cross Compiler question (the essence of a Canadian CrossCompiler)



So, I have a little script that borrowed from Dan's link below that sets the
variables ... Attached below. It is a healthy amount of Dan's code from his
demo*.sh scripts an the variables that are needed for my choosen compiler
package. As well, I found the two places in crosstool.sh where make all is
called for final gcc and the binutils so that I can put LDFLAGS=--static on
the make command line to generate static binaries.

The only problem left is bfd tools in binutils seem to be having a bad
string day when I try to run them and get weird errors like:

/opt/crosstool # ./strings
./stri: can't set BFD default target to `armv5b-softfloat-linux-g': Invalid
bfd targ


As you can see, there is a lot wrong with this message ... It kinda makes me
think the compiler's static init for strings was busted???

Robert


#!/bin/sh

# For use building a cross compiler that runs on the same platform as
# it generates code for. BUILD is the local machine, HOST = TARGET



set -ex
TARBALLS_DIR=$HOME/downloads
# RESULT_TOP=/opt/crosstool/native
RESULT_TOP=/opt/crosstool/native
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES

# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

# Build the toolchain.  Takes a couple hours and a couple gigabytes.

# Path to find the tools mentioned below
CRSNAME=armv5b-softfloat-linux
PATH=/opt/crosstool/gcc-3.4.4-glibc-2.2.5/armv5b-softfloat-linux/bin:$PATH

export CC=${CRSNAME}-gcc
export AR=${CRSNAME}-ar
export CXX=${CRSNAME}-g++
export LD=${CRSNAME}-ld
export NM=${CRSNAME}-nm
export AS=${CRSNAME}-as
export RANIB=${CRSNAME}-ranlib


# export AR_FOR_BUILD=ar
# export CC_FOR_BUILD=gcc
# export CXX_FOR_BUILD=g++


# Statically linked executables only
export LDFLAGS=--static

export GCC_HOST=${CRSNAME}

eval `cat armv5b-softfloat.dat gcc-3.4.4-glibc-2.2.5.dat` sh all.sh --notest
# eval `cat armv5b-softfloat.dat gcc-3.3.6-glibc-2.3.5.dat` sh all.sh
--notest

echo Done.




On 8/4/05 11:40 AM, "Dan Kegel" <dank@kegel.com> wrote:

> J. Robert Wyatt wrote:
>> The liberals, conservatives, and NDP were the party names when this term was
>> likely coined ... Since I left, they renamed a few things ;-)
>> 
>> So, that being said, if I wanted to use crosstool for this second compiler,
>> what is the "preferred" way to have crosstool do the work of generating the
>> host=target compiler? Would that be setting an environment variable like
>> "HOST" to be equal to the same as the target that was generated in the first
>> build? As well, I guess that the "RESULT_TOP should be named different too
>> to avoid overwritting the first build?
> 
> Well, most importantly, you have to set CC and friends to point to the results
> of the first crosstool run
> before running crosstool for the second compiler;
> otherwise the resulting compiler won't run on your host, right?
> 
> I've put a draft of an old script I used last
> year to do canadian cross builds at
> http://kegel.com/crosstool/canadian-foo.sh.txt
> 
> Have a look at the function setCanadianCrossVariables()
> to see how I set variables when building the
> final compiler.
> 
> Since you're not doing a full canadian cross, you might
> not need quite all the foo that's in there, but
> it might be a useful place to look to see which
> environment variables need to be set.
> - Dan

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]