I needed to build GCC 4.3.1 for my x86 system running a recent
development build of Solaris. I thought I would share what I
discovered, and then improved on.
I started with
Paul Beach's Blog on the same topic, but I knew it had a couple of
shortcomings, namely:
- No mention of a couple of pre-requisites that are mentioned in
the GCC document Prerequisites
for GCC
- A mysterious "cannot compute suffix of object files" error in the
build phase
- No resolution of how to generate binaries that have a useful
RPATH (see
Shared Library Search Paths for a discussion on the importance of
RPATH).
I found some help on this via
this forum post, but here is my own cheat sheet.
- Download & install GNU Multiple Precision Library (GMP)
version 4.1 (or later) from
. This will end up located in /usr/local.
- Download, build & install MPFR Library version 2.3.0 (or
later) from . This will
also end up in /usr/local.
- Download & unpack the GCC 4.x base source (the one of the
form gcc-4.x.x.tar.gz) from gcc.
- Download my example config_make script, edit as desired (you
probably want to change OBJDIR and PREFIX, and you may want to add
other configure options.
- Run the config_make script
- "gmake install" as root (although I instead create the directory
matching PREFIX, make it writable by the account doing the build, then
"gmake install" using that account).
You should now have GCC binaries that look for the shared libraries
they need in /usr/sfw/lib, /usr/local/lib and PREFIX/lib, without
anyone needing to set LD_LIBRARY_PATH. In particular, modern versions
of Solaris will have a libgcc_s.so in /usr/sfw/lib.
If you copy your GMP and MPFR shared libraries (which seem to be
needed by parts of the compiler) into PREFIX/lib, you will also have
a self-contained directory tree that you can deploy to any similar
system more simply (e.g. via rsync, tar, cpio, "scp -pr", ...)