214 lines
9.3 KiB
HTML
214 lines
9.3 KiB
HTML
<html>
|
|
<head>
|
|
<title>Installing GCC: Configuration</title>
|
|
</head>
|
|
<body>
|
|
<h1 align="center">Installing GCC: Configuration</h1>
|
|
|
|
<p>Like most GNU software, GCC must be configured before it can be built.
|
|
This document describes the recommended configuration procedure
|
|
for both native and cross targets.
|
|
|
|
<p>We use <i>srcdir</i> to refer to the toplevel source directory for
|
|
GCC; we use <i>objdir</i> to refer to the toplevel build/object
|
|
directory.
|
|
|
|
<p>First, we <b>highly</b> recommend that GCC be built into a
|
|
separate directory than the sources which does <b>not</b> reside
|
|
within the source tree. This is how we generally build GCC; building
|
|
where <i>srcdir</i> == <i>objdir</i> should still work, but doesn't
|
|
get extensive testing; building where <i>objdir</i> is a subdirectory
|
|
of <i>srcdir</i> is unsupported.
|
|
|
|
<p>Second, when configuring a native system, either "cc" or "gcc" must be in
|
|
your path or you must set CC in your environment before running configure.
|
|
Otherwise the configuration scripts may fail.
|
|
|
|
<p>To configure GCC:
|
|
|
|
<blockquote>
|
|
<tt>
|
|
<br>% mkdir <i>objdir</i>
|
|
<br>% cd <i>objdir</i>
|
|
<br>% <i>srcdir</i>/configure <b>[target]</b> <b>[options]</b>
|
|
</tt>
|
|
</blockquote>
|
|
|
|
|
|
<p><b>target specification</b>
|
|
<ul>
|
|
<li>GCC has code to correctly determine the correct value for
|
|
<b>target</b> for nearly all native systems. Therefore, we highly
|
|
recommend you not provide a configure target when configuring a
|
|
native compiler.
|
|
|
|
<li> <b>target</b> must be specified as <tt>--target=</tt><i>target</i>
|
|
when configuring a cross compiler;
|
|
examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
|
|
|
|
<li>Specifying just <i>target</i> instead of <tt>--target=</tt><i>target</i>
|
|
implies that the host defaults to <i>target</i>.
|
|
</ul>
|
|
|
|
|
|
<p><b> options specification</b>
|
|
|
|
<p>Use <b>options</b> to override several configure time options for
|
|
GCC. A partial list of supported <tt>options</tt>:
|
|
|
|
<ul>
|
|
<li> <tt>--prefix=</tt><i>dirname</i> -- Specify the toplevel installation
|
|
directory. This is the recommended way to install the tools into a directory
|
|
other than the default. The toplevel installation directory defaults to
|
|
/usr/local.
|
|
|
|
<p> We <b>highly</b> recommend against <i>prefix</i> being the same or a
|
|
subdirectory of <i>objdir</i> or vice versa.
|
|
|
|
<p>These additional options control where certain parts of the distribution
|
|
are installed. Normally you should not need to use these options.
|
|
<ul>
|
|
<li> <tt>--with-local-prefix=</tt><i>dirname</i> -- Specify the installation
|
|
directory for local include files. The default is /usr/local.
|
|
|
|
<li> <tt>--with-gxx-include-dir=</tt><i>dirname</i> -- Specify the installation
|
|
directory for g++ header files. The default is /usr/local/include/g++.
|
|
</ul>
|
|
|
|
<li> <tt>--enable-shared</tt> -- Build shared versions of the C++ runtime
|
|
libraries if supported <tt>--disable-shared</tt> is the default.
|
|
|
|
<li> <tt>--with-gnu-as</tt> -- Specify that the compiler should
|
|
assume that the assembler it finds is the GNU assembler. However,
|
|
this does not modify the rules to find an assembler and will result
|
|
in confusion if the found assembler is not actually the GNU
|
|
assembler. If you have more than one assembler installed on your
|
|
system, you may want to use this option in connection with
|
|
<tt>--with-as=/path/to/gas</tt>.
|
|
|
|
<li> <tt>--with-as=</tt><i>/path/to/as</i> -- Specify that the compiler
|
|
should use the assembler pointed to by <i>pathname</i>, rather than
|
|
the one found by the standard rules to find an assembler, which are:
|
|
<ul>
|
|
<li> Check the <i>$exec_prefix/lib/gcc-lib/$target/$version</i>
|
|
directory, where <i>$exec_prefix</i> defaults to <i>$prefix</i>
|
|
which defaults to <i>/usr/local</i> unless overridden by the
|
|
<tt>--prefix=/pathname</tt> switch described above.
|
|
<i>$target</i> is the target system triple, such as
|
|
<i>sparc-sun-solaris2.7</i>, and <i>$version</i> denotes the GCC
|
|
version, such as <i>2.95.2</i>.
|
|
|
|
<li> Check operating system specific directories
|
|
(e.g. <i>/usr/ccs/bin</i> on Sun Solaris).
|
|
</ul>
|
|
Note that these rules do not check for the value of
|
|
<i>$PATH</i>. You may want to use <tt>--with-as</tt> if no assembler
|
|
is installed in the directories listed above, or if you have
|
|
multiple assemblers installed and want to choose one that is not
|
|
found by the above rules.
|
|
|
|
<li> <tt>--with-gnu-ld</tt> -- Same as <tt>--with-gnu-as</tt> but
|
|
for the linker.
|
|
|
|
<li> <tt>--with-ld=</tt><i>/path/to/ld</i> -- Same as
|
|
<tt>--with-as</tt>, but for the linker.
|
|
|
|
<li> <tt>--with-stabs</tt> -- Specify that stabs debugging information should be used
|
|
instead of whatever format the host normally uses. Normally GCC uses the
|
|
same debug format as the host system.
|
|
|
|
<li> <tt>--enable-multilib</tt> -- Specify that multiple target libraries
|
|
should be built to support different target variants, calling conventions,
|
|
etc. This is the default.
|
|
|
|
<li> <tt>--enable-threads</tt> -- Specify that the target supports threads.
|
|
This affects the Objective-C compiler and runtime library, and exception
|
|
handling for other languages like C++ and Java.
|
|
|
|
<li> <tt>--enable-threads=</tt><i>lib</i> -- Specify that <i>lib</i> is the
|
|
thread support library. This affects the Objective-C compiler and
|
|
runtime library, and exception handling for other languages like C++ and
|
|
Java.
|
|
|
|
<li> <tt>--with-cpu=</tt><i>cpu</i> -- Specify which cpu variant the
|
|
compiler should generate code for by default. This is currently
|
|
only supported on the some ports, specifically arm, powerpc, and
|
|
SPARC. If configure does not recognize the model name (e.g. arm700,
|
|
603e, or ultrasparc) you provide, please check the configure script
|
|
for a complete list of supported models.
|
|
|
|
<li> <tt>--enable-target-optspace</tt> -- Specify that target libraries
|
|
should be optimized for code space instead of code speed. This is the
|
|
default for the m32r platform.
|
|
|
|
<li> <tt>--enable-cpp</tt> -- Specify that a shell script which emulates
|
|
traditional cpp functionality should be installed.
|
|
|
|
<li> <tt>--enable-cpplib</tt> -- Specify that the functionality of
|
|
CPP should be integrated into the compiler itself. This option is
|
|
not supported by snapshots since November 2000. In snapshots where
|
|
it is supported, it is not enabled by default, except for snapshots
|
|
very close to November 2000.
|
|
|
|
<li> <tt>--without-fast-fixincludes</tt> -- Specify that the old, slower
|
|
method of fixing the system header files should be used.
|
|
EGCS 1.1.x and older releases default to the slow version. GCC 2.95 and
|
|
newer releases will default to the fast version.
|
|
|
|
<li> <tt>--enable-version-specific-runtime-libs</tt> -- Specify that runtime
|
|
libraries should be installed in the compiler specific subdirectory
|
|
(<tt>${libsubdir}</tt>) rather than the usual places.
|
|
In addition, libstdc++'s include files will be installed in
|
|
<tt>${libsubdir}/include/g++</tt> unless you overruled it by using
|
|
<tt>--with-gxx-include-dir=</tt><i>dirname</i>.
|
|
Using this option is particularly useful if you intend to use several
|
|
versions of GCC in parallel. This is currently supported by <tt>libf2c</tt>
|
|
and <tt>libstdc++</tt>.
|
|
|
|
<li> <tt>--enable-languages=</tt><i>lang1</i><tt>,</tt><i>lang2</i><tt>,...</tt>
|
|
-- Specify that only a particular subset of compilers and their runtime libraries
|
|
should be built. For a list of valid values for <i>lang</i><tt>x</tt> you can issue
|
|
the following command in the <tt>gcc</tt> directory of your GCC source tree:<br>
|
|
<tt>
|
|
grep language= */config-lang.in
|
|
</tt><br>
|
|
Currently, you can use any of the following: <code>c++</code>,
|
|
<code>f77</code>, <code>java</code> and <code>objc</code>.
|
|
<code>CHILL</code> is not currently maintained, and will almost
|
|
certainly fail to compile. Note that this switch does not work with
|
|
EGCS 1.1.2 or older versions of egcs. It is supported in GCC 2.95
|
|
and newer versions. <br>
|
|
If you do not pass this flag, all languages available in the <tt>gcc</tt> sub-tree
|
|
will be configured. Re-defining LANGUAGES when calling <tt>make bootstrap</tt>
|
|
<b>*does not*</b> work anymore, as those language sub-directories might not have been
|
|
configured!
|
|
<li> <tt>--with-dwarf2</tt> -- Specify that the compiler should use DWARF2
|
|
debugging information as the default.
|
|
|
|
</ul>
|
|
|
|
<p>Some options which only apply to building cross compilers:
|
|
<ul>
|
|
<li> <tt>--with-headers=</tt><i>dir</i> -- Specifies a directory which has
|
|
target include files.
|
|
<em>This options is required</em> when building a cross
|
|
compiler, if <tt>${prefix}/${target}/sys-include</tt> doesn't pre-exist.
|
|
These include files will be copied into the gcc install directory.
|
|
Fixincludes will be run on these files to make them compatible with gcc.
|
|
<li> <tt>--with-libs=</tt><i>"dir1 dir2 ... dirN"</i> -- Specifies a list of
|
|
directories which contain the target runtime libraries. These libraries will
|
|
be copied into the gcc install directory.
|
|
<li> <tt>--with-newlib</tt> -- Specifies that "newlib" is being used as the target
|
|
C library. This causes __eprintf to be omitted from libgcc.a on the
|
|
assumption that it will be provided by newlib.
|
|
</ul>
|
|
|
|
<p>Note that each <tt>--enable</tt> option has a corresponding <tt>--disable</tt> option and
|
|
that each <tt>--with</tt> option has a corresponding <tt>--without</tt> option.
|
|
|
|
<hr>
|
|
<p><a href="./index.html">Return to the GCC Installation page</a></p>
|
|
|
|
</body>
|
|
</html>
|