All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephane Eranian <eranian@frankl.hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] recipe to build gcc3.0 as a cross-compiler for NUE
Date: Fri, 22 Jun 2001 17:27:59 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590693005751@msgid-missing> (raw)

Hi,

Here is the recipe to build binutils (2.11) and gcc-3.0 release as cross
compile tools for NUE.

IMPORTANT:
	- the recipe assumes you have installed the latest release of 
	  NUE (dated May 2001). More specifically, you need to have nue-fs-1.2

	- The recipe will replace your default gcc-2.96 with gcc-3.0. So careful
	  if you want to roll back.

	- So far it has been tested for compiling kernels. No tests have been
	  done to see if it works for applications.

	- Please read carefully the recipe, especially the step involving
	  xlimits.h

   Enjoy,
	  
+--------------------------------------------------------------------+
| Ste'phane ERANIAN                       | Email eranian@hpl.hp.com |
| Hewlett-Packard Laboratories            |                          |
| 1501, Page Mill Road MS 1U-15           |                          |
| Palo  Alto, CA 94303-096                |                          |
| USA                                     |                          |
| Tel : (650) 857-7174                    |                          |
| Fax : (650) 857-5548                    |                          |
+--------------------------------------------------------------------+

		---------------------------------------------------
		Recipe to build gcc-3.0 as a cross-compiler for NUE
		---------------------------------------------------
			  (c) 2001 Hewlett-Packard Company

Pre-requirements:
	- We suppose you have installed the latest release of NUE and especially
	  the nue-fs-1.2 RPM

	- have access to an installed NUE filesystem
	  specifically /nue/usr/include)

	- use a Linux/x86 host that runs with  GLIBC-2.1. 
	  RH7.1 does not qualify here. But RH7 or RH6.x should work.

	- have the gcc-3.0 release and latest binutils (like 2.11.90)  
	  tar files.

	- you will need to install inside NUE, therefore need root privilege

Configuration:
	- we suppose a NUE installation is accessible in /nue

	- we suppose that the directory used to compile binutils and gcc
	  is also visible inside NUE. This means that it must all directories
	  must be created with a path that begins with /nue. 

	  For instance, I can unpack and build the toolchain in 
	  /nue/home/eranian/toolchain and when I enter NUE, the directory is 
	  accessible at /home/eranian/toolchain.


1/ BUILDING BINUTILS
	
	- you must start with the binutils because they are needed by gcc3
	  later on.

	- untar the binutils in a good directory for you. We suppose this
	  creates a directory called binutils.

	- create a directory called binutils-build. It is not recommended
	  to build the binutils in the directory where you have the sources.

	- cd binutils-build

	- execute the configure command as follows:

	% ../binutils/configure --target=ia64-hp-linux --prefix=/usr

	- type make

	- once it is over, you need to remake ld for shared library support:

		% cd ld
		% make clean
		% make LIB_PATH=/lib:/usr/lib:/usr/local/lib/:/usr/ia64-hp-linux/lib 
		% cd ..
		
	- enter NUE (we suppose you will stay in the same directory, in this case)

	- as root make install:

	# make install	

2/ BUILDING GCC3 as a cross-compiler for NUE

	- untar gcc3 source code. We suppose this creates a directory called
	  gcc-3.0

	- edit gcc-3.0/gcc/config/i386/xm-i386.h and  add the following 2 lines:

	#define HOST_BITS_PER_WIDE_INT 64
	#define HOST_WIDE_INT long long

	  IMPORTANT: this is a gross hack that it meant to enable the cross 
	  compile from a 32bits host to a 64bits target. This hack is very 
	  specific to building for Linux/ia64 target and MUST be removed from 
	  the file, should the source code be used for other purposes.

	- create a build directory called gcc-build. gcc3.0 does not build
	  from the directory where the sources are unpacked.

	- cd gcc-build

	- execute the configure command as follows:

	% ../gcc-3.0/configure --target=ia64-hp-linux --prefix=/usr --enable-threads=posix

	- type make

	- It fails with:

	  gcc-build/gcc/xgcc -B/home/eranian/toolchain/gcc-build/gcc/ -B/usr/ia64-hp-linux/bin/ -B/usr/ia64-hp-linux/lib/ -isystem /usr/ia64-hp-linux/include -c -o crtbegin.o -x assembler-with-cpp ../../gcc-3.0/gcc/config/ia64/crtbegin.asm
	  as: unrecognized option `-x'
	  make[1]: *** [crtbegin.o] Error 1
	  make[1]: Leaving directory `/home/eranian/toolchain/gcc-build/gcc'
	  make: *** [all-gcc] Error 2

	- cd gcc

	- type the following:

	% ln -s /nue/usr/bin/ia64-hp-linux-as as

	- Remove the generated xlimits.h. It is not the correct one. 
	  It will be regenerated correctly later.

	% rm xlimits.h


	- stay in the gcc directory and type make again

	% make TCFLAGS="-g -O2 -I/nue/usr/include" SYSTEM_HEADER_DIR=/nue/usr/include

	- It will compile a few files and then die as follows:

	  make[1]: ia64-hp-linux-ar: Command not found

	- Type the following:

	% ln -s /nue/usr/bin/ia64-hp-linux-ar .
	% ln -s /nue/usr/bin/ia64-hp-linux-nm .
 

	- restart make:
	% make TCFLAGS="-g -O2 -I/nue/usr/include" SYSTEM_HEADER_DIR=/nue/usr/include
	

	- It will die again saying:

	  collect2: cannot find `ld'

	- Create the symlink:

	% ln -s /nue/usr/bin/ia64-hp-linux-ld ld

	- Type make:
	% make TCFLAGS="-g -O2 -I/nue/usr/include" SYSTEM_HEADER_DIR=/nue/usr/include

	- It will stop again:

	  gcc-build/gcc/ld: cannot open crti.o: No such file or directory

	- Create additional symlinks

	% ln -s /nue/usr/lib/crti.o .
	% ln -s /nue/usr/lib/crtn.o .
	% ln -s /nue/usr/lib/libc.a .

	- Type make again to restart:
	% make TCFLAGS="-g -O2 -I/nue/usr/include" SYSTEM_HEADER_DIR=/nue/usr/include

	- it will stop again:

	  as: unrecognized option `-Qy'

	- remove as  and ld (which we created earlier)

	% rm as	ld
	
	- continue with make

	% make TCFLAGS="-g -O2 -I/nue/usr/include" SYSTEM_HEADER_DIR=/nue/usr/include

	- You should go all the way to the end now

	- enter NUE (we suppose you will stay in the gcc directory)

	- as root make install:

	# make install

	IMPORTANT: This will partially replace the default 2.96 install.
	However the /usr/lib/gcc-lib/ia64-hp-linux/2.96-ia64-000717 is preserved.
	Unfortunately, there is no easy way to make a non-destructive install.


                 reply	other threads:[~2001-06-22 17:27 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-ia64-105590693005751@msgid-missing \
    --to=eranian@frankl.hpl.hp.com \
    --cc=linux-ia64@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.