diff options
author | Michael I. Bushnell <mib@gnu.org> | 1996-07-18 04:35:29 +0000 |
---|---|---|
committer | Michael I. Bushnell <mib@gnu.org> | 1996-07-18 04:35:29 +0000 |
commit | 94cef36797600d11a50d09828fa80df8a73dfd1c (patch) | |
tree | b7cba9afef95489eedef534d3e6946eb13f595ba /INSTALL-cross | |
parent | 88dbbbf9e48e24f1ac007c1e4eeffd9caf8e2fad (diff) |
*** empty log message ***
Diffstat (limited to 'INSTALL-cross')
-rw-r--r-- | INSTALL-cross | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/INSTALL-cross b/INSTALL-cross new file mode 100644 index 00000000..16ace324 --- /dev/null +++ b/INSTALL-cross @@ -0,0 +1,119 @@ + === Hey, Emacs! This is -*- Text -*- !!! === +Last update 11 Apr 1996 by Michael I. Bushnell, p/BSG (mib@gnu.ai.mit.edu). + + +These are instructions for building the Hurd as in cross-development +environment. Unless you are building the Hurd on an already running +Hurd system, you will need these directions to build the Hurd from any +other kind of system. Even if you are using a Mach system (Lites, +say) you will *STILL* need to follow these directions; this is still +cross-compilation. + + + +I: + +First you must have GCC and binutils installed. We use GCC 2.7.2 and +recent Cygnus binutils snapshots. You need to configure binutils and +GCC for the i486-gnu target. In order to build the GNU C library for +the Hurd, you will need gawk installed. You should install GCC and +binutils as the instructions for these programs indicate. The Hurd +makefiles depend on having them installed correctly as +cross-development tools. Even if you are building the Hurd on a 486, +even if it's running a different Mach-based OS, you are still cross +compiling. Don't attempt to use tools that have been configured for +something other than i486-gnu. + +Install things in /usr/local, as the Makefiles do by default. If you +change $(prefix) when installing the cross-development tools, then +random problems might happen. I cannot stress to highly that you are +much better off doing things in the ordinary default way. + + +II: + +You need space to "install" the compiled Hurd, its libraries, include +files, and binaries that will run on the Hurd. In these instructions, +we will refer to this as the "installation staging area". This will, +more or less, be a suitable image to use as a Hurd root image when you +are finished. + +This space needs to be accessible to the machine doing the +cross-compilation, because the libc and include files that go in the +Hurd's root filesystem are also the ones that are needed during +cross-compilation. + +We strongly advise that this directory not be put in /usr/local. This +will tend to cause confusion. + +If you followed the directions in (I) above, then in +/usr/local/i486-gnu you already have a number of cross-development +tools. (ar, ranlib, ld, as and so forth.) This is the place where +the compiler looks for cross-development stuff. So now make two +symlinks, named /usr/local/i486-gnu/include and +/usr/local/i486-gnu/lib, and point them at foo/include and foo/lib, +where `foo' is the name of you Hurd installation staging area. If you +don't do this, you will lose. Do it now. + + +III: + +You should get MiG from the Utah mach4 distribution, and build it to +cross compile. Set MIG appropriately in Maketools (usually to +"i486-gnu-mig"). Install it as /usr/local/i486-gnu/bin/mig, install +migcom as /usr/local/i486-gnu/lib/migcom. (Note that the last +pathname, because of the symlink you made in step II, is actually +somewhere in the Hurd installation staging area directory. This is +strictly wrong, because the running Hurd won't be able to use that +migcom. Don't worry, just remember when you boot the Hurd that this +one program won't work quite right. We intend to fix this later.) + + +IV: + +MAKE VERY SURE that gcc, for all Hurd work, does not use a gcc include +directory with fixincludes processed files. Your special GCC include +directory should have *only* GCC include files. GCC should do this by +default, but you might want to check in +/usr/local/lib/gcc-lib/i486-gnu/CCVERSION/include to make sure. + + +V: + +Now, make the GNU C library. Please read its own installation +instructions, but here is a brief summary. + +Configure the GNU library with a command like: + +configure i486-gnu --with-mach=FOO --with-hurd=BAR --prefix=BAZ + +FOO should be the top level source directory of your Mach source. +BAR should be the top level Hurd source directory. +BAZ should be the installation staging area you have chosen. + +Build and install the library with `make install'. + + +VI: + +Configure the Hurd with a command like: + +"CC=gcc -b i486-gnu" configure i486-gnu --prefix=BAZ + +BAZ is, again, the name of your installation staging area. + +Build and install the Hurd with `make install'. + + +VII: + +Now in your Hurd staging area are the complete binaries for the Hurd +and its programs, and the C library and its associated programs. You +will want binaries for other programs too, of course--for example, you +have no shell yet. In general, you can build most GNU packages +without too much hassle using your cross compilers. In this way you +can build up as much of a binary distribution as you like. + +See the file `INSTALL-binary' for instructions on running your new +binaries. + |