glfs/general/prog/gcc3.xml

239 lines
9.6 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!-- Inserted as a reminder to do this. The mention of a test suite
is usually right before the root user installation commands. Please
delete these 12 (including one blank) lines after you are done.-->
<!-- Use one of the two mentions below about a test suite,
delete the line that is not applicable. Of course, if the
test suite uses syntax other than "make check", revise the
line to reflect the actual syntax to run the test suite -->
<!-- <para>This package does not come with a test suite.</para> -->
<!-- <para>To test the results, issue: <command>make check</command>.</para> -->
<!ENTITY gcc3-download-http "http://ftp.gnu.org/gnu/gcc/gcc-&gcc3-version;/gcc-&gcc3-version;.tar.bz2">
<!ENTITY gcc3-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc3-version;/gcc-&gcc3-version;.tar.bz2">
<!ENTITY gcc3-md5sum "6936616a967da5a0b46f1e7424a06414">
<!ENTITY gcc3-size "24 MB">
<!ENTITY gcc3-buildsize "433 MB (includes running the test suite)">
<!ENTITY gcc3-time "5.2 SBU (additional 11.2 SBU to run the test suite)">
]>
<sect1 id="gcc3" xreflabel="GCC-&gcc3-version;">
<?dbhtml filename="gcc3.html" ?>
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
<keywordset>
<keyword role="package">gcc-&gcc3-version;.tar</keyword>
<keyword role="ftpdir">gcc</keyword>
</keywordset>
</sect1info>
<title>GCC-&gcc3-version;</title>
<indexterm zone="gcc3">
<primary sortas="a-GCC-3-3">GCC-&gcc3-version;</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to GCC-&gcc3-version;</title>
<para>There are several reasons why you may wish to install
<application>GCC</application>-&gcc3-version;. Some packages have not been
updated so they can be successfully compiled by
<application>GCC</application>-&gcc-version; as
version 4.x.x of <application>GCC</application> is much stricter in
enforcing coding standards. Additionally, some pre-compiled packages may
require the <application>GCC</application>-&gcc3-version; libraries at
run-time. Another reason you may need to install
<application>GCC</application>-&gcc3-version; is to use the
<command>g77</command> Fortran 77 compiler provided by pre-4.x.x versions
of <application>GCC</application>. <application>GCC</application>-4.x.x
only includes <command>gfortran</command>, a Fortran 95 compatible compiler
that is not yet ready to be used in a production environment.</para>
<para>If all you need is a working <command>{f,g}77</command> Fortran 77
compiler, you may wish to use the one provided by
<application>GCC</application>-3.4.x. This is what the
<application>GCC</application> developers recommend. Instructions for
building the <application>GCC</application>-3.4.x Fortran compiler can be
found on the
<ulink url="http://wiki.linuxfromscratch.org/blfs/wiki/gcc3">BLFS
Wiki</ulink>.</para>
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Download (HTTP): <ulink url="&gcc3-download-http;"/></para>
</listitem>
<listitem>
<para>Download (FTP): <ulink url="&gcc3-download-ftp;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &gcc3-md5sum;</para>
</listitem>
<listitem>
<para>Download size: &gcc3-size;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &gcc3-buildsize;</para>
</listitem>
<listitem>
<para>Estimated build time: &gcc3-time;</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing='compact'>
<listitem>
<para>Required patch: <ulink
url="&patch-root;/gcc-&gcc3-version;-no_fixincludes-1.patch"/></para>
</listitem>
<listitem>
<para>Required patch: <ulink
url="&patch-root;/gcc-&gcc3-version;-linkonce-1.patch"/></para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">GCC-&gcc3-version; Dependencies</bridgehead>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional"><xref linkend="dejagnu"/> (required to run the full test suite)</para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/gcc3"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of GCC-&gcc3-version;</title>
<para>Install <application>GCC</application>-&gcc3-version; by running
the following commands:</para>
<screen><userinput>patch -Np1 -i ../gcc-&gcc3-version;-no_fixincludes-1.patch &amp;&amp;
patch -Np1 -i ../gcc-&gcc3-version;-linkonce-1.patch &amp;&amp;
mkdir ../gcc-build &amp;&amp;
cd ../gcc-build &amp;&amp;
../gcc-&gcc3-version;/configure --prefix=/opt/gcc-&gcc3-version; \
--enable-shared --enable-languages=c,c++ --enable-threads=posix &amp;&amp;
make bootstrap</userinput></screen>
<para>If desired, run the test suite using the following commands. The
<command>test_summary</command> commands create log files which can be
compared to known good results located at <ulink
url="&files-anduin;/gcc336_test.txt"/>.</para>
<screen><userinput>make -k check &amp;&amp;
../gcc-&gcc3-version;/contrib/test_summary >test_summary.log 2>&amp;1 &amp;&amp;
../gcc-&gcc3-version;/contrib/test_summary | \
grep -A7 Summ >test_summary_short.log 2>&amp;1</userinput></screen>
<para>Now, as the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>make install &amp;&amp;
mv -v /opt/gcc-&gcc3-version;/lib/libstdc++.so.5* /usr/lib &amp;&amp;
ln -v -sf /usr/lib/libstdc++.so.5.0.7 /opt/gcc-&gcc3-version;/lib &amp;&amp;
ln -v -sf libstdc++.so.5.0.7 /opt/gcc-&gcc3-version;/lib/libstdc++.so.5 &amp;&amp;
chown -v -R root:root \
/opt/gcc-&gcc3-version;/lib/gcc-lib/i686-pc-linux-gnu/&gcc3-version;/include</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para><command>mkdir ../gcc-build; cd ../gcc-build</command>: The
<application>GCC</application> development team recommends
building in a separate directory.</para>
<para id='gcc3-lang'><parameter>--enable-shared --enable-languages=c,c++
--enable-threads=posix</parameter>: Configures
<application>GCC</application> to build the <application>C</application>
and <application>C++</application> compilers and enable the related
<application>C++</application> options. In addition to c and c++, you can
add f77 for FORTRAN (called <application>g77</application>).
Note that <application>GCC-4</application> no
longer provides a FORTRAN 77 compiler.</para>
<indexterm zone="gcc3 gcc3-lang">
<primary sortas="b-g77">g77</primary>
</indexterm>
<indexterm zone="gcc3 gcc3-lang">
<primary sortas="b-FORTRAN">FORTRAN</primary>
</indexterm>
<indexterm zone="gcc3 gcc3-lang">
<primary sortas="b-ObjectiveC">Objective C</primary>
</indexterm>
<para><command>mv -v /opt/gcc-&gcc3-version;/lib/libstdc++.so.5*
/usr/lib</command>: Moves the <application>C++</application> library to the
standard lib directory to avoid having to add
<userinput>/opt/gcc-&gcc3-version;/lib</userinput> to
<filename>/etc/ld.so.conf</filename>.</para>
</sect2>
<sect2 role="configuration">
<title>Configuring GCC-&gcc3-version;</title>
<sect3>
<title>Configuration information</title>
<para>If you only need the GCC-&gcc3-version; C++ library, you may delete
<filename>/opt/gcc-&gcc3-version;</filename>.</para>
<para>Whenever you need to use GCC-&gcc3-version; instead of your system
installed compiler, add
<filename class="directory">/opt/gcc-&gcc3-version;/bin</filename> to the
front of your <envar>PATH</envar> or (preferably) set the <envar>CC</envar>
environment variable before compiling the concerned package.</para>
<para>If you use <application>g77</application> programs, you also
should move the libg2c.* libraries and symbolic links to <filename
class='directory'>/usr/lib</filename>. Using export
LD_LIBRARY_PATH=/opt/gcc-&gcc3-version;/lib or updating
<filename>/etc/ld.so.conf</filename> to point to <filename
class='directory'>/opt/gcc-&gcc3-version;/lib</filename> is not
recommended as it may conflict with your normal libraries.</para>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directory</segtitle>
<seglistitem>
<seg>c++, cpp, g++, gcc, gccbug, gcov, and architecture specific
names of these programs.</seg>
<seg>libgcc_s.so, libiberty.a, libstdc++.{a,so}, libsupc++.a, and other
support libraries and files.</seg>
<seg>/opt/gcc-&gcc3-version;</seg>
</seglistitem>
</segmentedlist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<para>The GCC-&gcc3-version; package contains the
<command>gcc</command>-&gcc3-version; <application>C</application> and
<application>C++</application> compilers and the GCC-&gcc3-version;
<filename>libstdc++.so</filename> library that is required by some
commercial and pre-compiled packages.</para>
</sect2>
</sect1>