source: general/prog/gcc.xml@ 5c22cb01

systemd-13485
Last change on this file since 5c22cb01 was 5c22cb01, checked in by Douglas R. Reno <renodr@…>, 8 years ago

Updated lsof URL. Merged from trunk r17090
Updated PIN-Entry dependencies. Merged from trunk r17090
Updated Valgrind dependencies. Merged from trunk r17090
Added note about OpenSSL's Test Suite not supporting parallel make jobs. Merged from trunk r17090.
Restored autoconf to libva-intel-driver. Merged from trunk r17090
Updated to Sudo-1.8.16. Merged from trunk r17127
Changed the configure script in the GCC-5.3.0 page to use the new configure switch for the libstdc++ ABI.
Updated to OpenSSH-7.2p2. Merged from trunk r17106.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/branches/systemd@17199 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 14.2 KB
RevLine 
[52d29f7]1<?xml version="1.0" encoding="ISO-8859-1"?>
[6732c094]2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
[52d29f7]4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
[7ff0948]7 <!ENTITY gcc-download-http "http://ftpmirror.gnu.org/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
[9268fb5]8 <!ENTITY gcc-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
[2037ec4]9 <!ENTITY gcc-md5sum "c9616fd448f980259c31de613e575719">
10 <!ENTITY gcc-size "92 MB">
11 <!ENTITY gcc-buildsize "7.2 GB (with tests)">
12 <!ENTITY gcc-time "45.7 SBU (with tests and parallelism=4)">
[52d29f7]13]>
14
[58bd309a]15<sect1 id="gcc" xreflabel="GCC-&gcc-version;">
[70e3220]16 <?dbhtml filename="gcc.html" ?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>GCC-&gcc-version;</title>
24
25 <indexterm zone="gcc">
[ac38e9dc]26 <primary sortas="a-gcc-5-0">GCC-&gcc-version;</primary>
[70e3220]27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to GCC</title>
31
[ac38e9dc]32 <para>
33 The <application>GCC</application> package contains the GNU Compiler
34 Collection. This page describes the installation of compilers for the
35 following languages: C, C++, Fortran, Objective C, Objective C++, and Go.
36 Two additional languages , Ada and Java are available in the collection.
37 They have specific requirements, so they are described in separate pages
38 (<xref linkend="gcc-ada"/> and <xref linkend="gcc-java"/>). Since C and
39 C++ are installed in LFS, this page is either for upgrading C and C++,
40 or for installing additional compilers.
41 </para>
[5512e64]42
[2037ec4]43 &lfs78_checked;
[625d5fe5]44
[636acbb1]45 <caution>
[ac38e9dc]46 <para>
47 If you are upgrading <application>GCC</application> from any other
48 version prior to &gcc-version;, then you must be careful compiling 3rd
49 party kernel modules. You should ensure that the kernel and all its
50 native modules are also compiled using the same version of
51 <application>GCC</application> that you use to build the 3rd party module.
52 This issue does not affect native kernel (and kernel modules) updates,
53 as the instructions below are a complete reinstallation of
54 <application>GCC</application>. If you have existing 3rd party modules
55 installed, ensure they are recompiled using the updated version of
56 <application>GCC</application>. As always, never update the kernel
57 headers from the ones used when <application>Glibc</application> was
58 compiled during LFS.
59 </para>
60
61 <para>
62 The 5.1.0 version of GCC introduces an incompatible ABI change in the
63 C++ library <filename>libstdc++.so</filename>. This does not prevent
64 using programs compiled with the previous version of <application>GCC
65 </application>, since both old and new symbols are available in the
[2037ec4]66 library. But compiling, with the new version, programs which use
67 libraries compiled with the old version is likely to give errors. So,
68 if you are upgrading from any previous version prior to 5.1.0, you have
69 two solutions:
[ac38e9dc]70 recompile all the libraries with the new version, or use the <option>
[5c22cb01]71 --with-default-libstdcxx-abi=gcc4-compatible</option> switch to configure.
[ac38e9dc]72 </para>
[636acbb1]73 </caution>
74
[70e3220]75 <bridgehead renderas="sect3">Package Information</bridgehead>
76 <itemizedlist spacing="compact">
77 <listitem>
[ac38e9dc]78 <para>
79 Download (HTTP): <ulink url="&gcc-download-http;"/>
80 </para>
[70e3220]81 </listitem>
82 <listitem>
[ac38e9dc]83 <para>
84 Download (FTP): <ulink url="&gcc-download-ftp;"/>
85 </para>
[70e3220]86 </listitem>
87 <listitem>
[ac38e9dc]88 <para>
89 Download MD5 sum: &gcc-md5sum;
90 </para>
[70e3220]91 </listitem>
92 <listitem>
[ac38e9dc]93 <para>
94 Download size: &gcc-size;
95 </para>
[70e3220]96 </listitem>
97 <listitem>
[ac38e9dc]98 <para>
99 Estimated disk space required: &gcc-buildsize;
100 </para>
[70e3220]101 </listitem>
102 <listitem>
[ac38e9dc]103 <para>
104 Estimated build time: &gcc-time;
105 </para>
[70e3220]106 </listitem>
107 </itemizedlist>
[ac38e9dc]108
[7ff0948]109<!-- <bridgehead renderas="sect3">Additional Downloads</bridgehead>
[18310d86]110 <itemizedlist spacing="compact">
111 <listitem>
112 <para>
113 Required patch:
114 <ulink url="&patch-root;/gcc-&gcc-version;-upstream_fixes-1.patch"/>
115 </para>
116 </listitem>
117 </itemizedlist>
[7ff0948]118-->
[57105fd]119
[70e3220]120 <bridgehead renderas="sect3">GCC Dependencies</bridgehead>
121
[7cadfea]122 <bridgehead renderas="sect4">Recommended</bridgehead>
123 <para role="recommended">
[eb631ac]124 <xref linkend="dejagnu"/>, for tests
[7cadfea]125 </para>
126
[ac38e9dc]127 <para condition="html" role="usernotes">
128 User Notes: <ulink url="&blfs-wiki;/gcc"/>
129 </para>
[1039de3]130
[70e3220]131 </sect2>
[034eda7]132
[70e3220]133 <sect2 role="installation">
134 <title>Installation of GCC</title>
135
136 <important>
[ac38e9dc]137 <para>
138 Even if you specify only languages other than C and C++ to the
139 <command>./configure</command> command below, the
140 installation process will overwrite your existing
141 <application>GCC</application> C and C++ compilers and libraries.
142 Having the <application>Tcl</application>,
143 <application>Expect</application> and <application>DejaGnu</application>
144 packages installed before beginning the build is highly recommended so
145 you can run the full suite of tests.
146 </para>
147
148 <para>
149 Do not continue with the <command>make install</command> command
150 until you are confident the build was successful. You can compare your
151 test results with those found at <ulink
152 url="http://gcc.gnu.org/ml/gcc-testresults/"/>. You may also want to
153 refer to the information found in the <application>GCC</application>
154 section of Chapter 6 in the LFS book (<ulink
155 url="&lfs-root;/chapter06/gcc.html"/>).
156 </para>
[70e3220]157 </important>
158
[ac38e9dc]159 <para>
160 The instructions below are intentionally performing a
161 <quote>bootstrap</quote> process. Bootstrapping is needed for robustness
162 and is highly recommended when upgrading the compilers version. To disable
163 bootstrap anyways, add <parameter>--disable-bootstrap</parameter> to the
164 <command>./configure</command> options below.
165 </para>
166
167 <para>
168 Install <application>GCC</application> by running the following commands:
169 </para>
[d02add0]170
[ac38e9dc]171<screen><userinput>mkdir ../gcc-build &amp;&amp;
[2d488eb]172cd ../gcc-build &amp;&amp;
173
174../gcc-&gcc-version;/configure \
175 --prefix=/usr \
176 --disable-multilib \
177 --with-system-zlib \
178 --enable-languages=c,c++,fortran,go,objc,obj-c++ &amp;&amp;
[7cadfea]179make</userinput></screen>
[5512e64]180
[ac38e9dc]181 <para>
182 If you have installed additional packages such as
183 <application>Valgrind</application> and <application>GDB</application>,
184 the <application>GCC</application> part of the testsuite will run more
185 tests than in LFS. Some of those will report FAIL and others XPASS
186 (pass when expected to FAIL). To run the tests, issue:
187 </para>
[d3757f1c]188
[7cadfea]189<screen><userinput>ulimit -s 32768 &amp;&amp;
[b10cfc81]190make -k check</userinput></screen>
191<!-- The command above may error out, so using && may prevent the summary
192to be run. -->
193
[ac38e9dc]194 <para>
195 The tests are very long, and the results may be hard to find in the
196 logs, specially if you use parallel jobs with make. You can get a summary
197 of the tests with:
198 </para>
[5512e64]199
[b10cfc81]200<screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen>
[8c9ec303]201
[ac38e9dc]202 <para>
203 Now, as the <systemitem class="username">root</systemitem> user:
204 </para>
[8c9ec303]205
[70e3220]206<screen role="root"><userinput>make install &amp;&amp;
[5512e64]207
[7cadfea]208mkdir -pv /usr/share/gdb/auto-load/usr/lib &amp;&amp;
209mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &amp;&amp;
210
[38485e5c]211chown -v -R root:root \
[2d488eb]212 /usr/lib/gcc/*linux-gnu/&gcc-version;/include{,-fixed}</userinput></screen>
[f182eed]213
[ac38e9dc]214 <para>
215 Some packages expect to find the C preprocessor in
216 <filename class="directory">/lib</filename> or may refer to the C compiler
217 under the name <command>cc</command>. The following symbolic links are not
218 needed if you have followed the LFS instructions, since they
219 have been already created. If you do not have them on your system, issue
220 as the <systemitem class="username">root</systemitem> user:
221 </para>
[70e3220]222
[2037ec4]223<screen role="root"><userinput>ln -v -sf ../usr/bin/cpp /lib &amp;&amp;
224ln -v -sf gcc /usr/bin/cc &amp;&amp;
[ac38e9dc]225install -v -dm755 /usr/lib/bfd-plugins &amp;&amp;
226ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/&gcc-version;/liblto_plugin.so /usr/lib/bfd-plugins/</userinput></screen>
[034eda7]227
[70e3220]228 </sect2>
229
230 <sect2 role="commands">
231 <title>Command Explanations</title>
[57105fd]232
[2d488eb]233 <para>
234 <command>mkdir ../gcc-build; cd ../gcc-build</command>: The
235 <application>GCC</application> documentation recommends
236 building the package in a dedicated build directory.
237 </para>
[70e3220]238
[2d488eb]239 <para>
240 <parameter>--disable-multilib</parameter>: This parameter ensures
241 that files are created for the specific architecture of your computer.
242 </para>
[7cadfea]243
[2d488eb]244 <para>
[fa200b8]245 <parameter>--with-system-zlib</parameter>: Uses the system
[2d488eb]246 <application>zlib</application> instead of the bundled one.
247 <application>zlib</application> is used for compressing
248 and uncompressing <application>GCC</application>'s intermediate
249 language in LTO (Link Time Optimization) object files.
250 </para>
[034eda7]251
[800c9c3]252 <para>
[2d488eb]253 <parameter>--enable-languages=c,c++,fortran,go,objc,obj-c++</parameter>:
254 This command identifies which languages to build. You may modify
255 this command to remove undesired languages.
256 </para>
257
[ac38e9dc]258 <para>
[5c22cb01]259 <option>--with-default-libstdcxx-abi=gcc4-compatible</option>: Use this switch if you
[ac38e9dc]260 are upgrading from a <application>GCC</application> version prior to 5.1.0,
261 and you do not want to recompile all the libraries written in C++.
262 </para>
263
[2d488eb]264 <para>
265 <command>ulimit -s 32768</command>: This command prevents several
266 tests from running out of stack space.
267 </para>
268
269 <para>
270 <command>make -k check</command>: This command runs the test suite
271 without stopping if any errors are encountered.
272 </para>
273
274 <para>
275 <command>../gcc-&gcc-version;/contrib/test_summary</command>: This
276 command will produce a summary of the test suite results. You can append
277 <command>| grep -A7 Summ</command> to the command to produce an even more
278 condensed version of the summary. You may also wish to redirect the output
279 to a file for review and comparison later on.
280 </para>
281
282 <para>
283 <command>mv -v /usr/lib/*gdb.py ...</command>: The installation
284 stage puts some files used by <application>gdb</application> under the
285 <filename class="directory">/usr/lib</filename> directory. This generates
286 spurious error messages when performing <command>ldconfig</command>. This
287 command moves the files to another location.
288 </para>
289
290 <para>
291 <command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>:
292 If the package is built by a user other than root, the ownership of the
293 installed <filename class="directory">include</filename> directory (and
294 its content) will be incorrect. This command changes the ownership to the
295 <systemitem class="username">root</systemitem> user and group.
296 </para>
[034eda7]297
[70e3220]298 </sect2>
299
300 <sect2 role="content">
301 <title>Contents</title>
302
[ac38e9dc]303 <para>
304 Some program and library names and descriptions are not listed here,
305 but can be found at
306 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were
307 initially installed during the building of LFS.
308 </para>
[2d488eb]309
[70e3220]310 <segmentedlist>
311 <segtitle>Installed Programs</segtitle>
312 <segtitle>Installed Libraries</segtitle>
313 <segtitle>Installed Directories</segtitle>
314
315 <seglistitem>
[7cadfea]316 <seg>
[2037ec4]317 gccgo, go, gofmt and gfortran, hard-linked to architecture specific
[7ff0948]318 names
[7cadfea]319 </seg>
320 <seg>
[2d488eb]321 libgfortran.{so,a},
[2037ec4]322 libgo.{so,a}, libgobegin.a, libgolibbegin.a, libnetgo.a,
[7ff0948]323 libobjc.{so,a}, and numerous other run-time libraries and executables
[7cadfea]324 </seg>
325 <seg>
[2037ec4]326 /usr/include/c++/&gcc-version;,
327 /usr/libexec/gcc/&lt;arch-triplet&gt;/&gcc-version;,
328 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-version;,
329 /usr/lib/go/&gcc-version;, and /usr/share/gcc-&gcc-version;
[7cadfea]330 </seg>
[70e3220]331 </seglistitem>
332 </segmentedlist>
333
334 <variablelist>
335 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
336 <?dbfo list-presentation="list"?>
337 <?dbhtml list-presentation="table"?>
338
[034eda7]339 <varlistentry id="gccgo">
340 <term><command>gccgo</command></term>
341 <listitem>
[ac38e9dc]342 <para>
343 is a GCC-based compiler for the <application>Go</application> language.
344 </para>
[034eda7]345 <indexterm zone="gcc gccgo">
346 <primary sortas="b-gccgo">gccgo</primary>
[70e3220]347 </indexterm>
348 </listitem>
349 </varlistentry>
[2037ec4]350
[7ff0948]351 <varlistentry id="go">
352 <term><command>go</command></term>
353 <listitem>
354 <para>
355 is a tool for managing <application>Go</application> source code.
356 </para>
357 <indexterm zone="gcc go">
358 <primary sortas="b-go">go</primary>
359 </indexterm>
360 </listitem>
361 </varlistentry>
362
363 <varlistentry id="gofmt">
364 <term><command>gofmt</command></term>
365 <listitem>
366 <para>
367 is a tool for formatting <application>Go</application> source code.
368 </para>
369 <indexterm zone="gcc gofmt">
370 <primary sortas="b-gofmt">gofmt</primary>
371 </indexterm>
372 </listitem>
373 </varlistentry>
[70e3220]374
[800c9c3]375 <varlistentry id="gfortran">
376 <term><command>gfortran</command></term>
377 <listitem>
[ac38e9dc]378 <para>
379 is a GCC-based compiler for the <application>Fortran</application>
380 language.
381 </para>
[800c9c3]382 <indexterm zone="gcc gfortran">
383 <primary sortas="b-gfortran">gfortran</primary>
384 </indexterm>
385 </listitem>
386 </varlistentry>
387
[70e3220]388 </variablelist>
389
390 </sect2>
[1a686a1]391
392</sect1>
Note: See TracBrowser for help on using the repository browser.