source: general/prog/gcc-ada.xml@ 57945e0

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 57945e0 was 718593a, checked in by Pierre Labastie <pieere@…>, 9 years ago

Tags

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@15560 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 17.8 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY gcc-download-http "http://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
8 <!ENTITY gcc-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
9 <!ENTITY gcc-md5sum "4df8ee253b7f3863ad0b86359cd39c43">
10 <!ENTITY gcc-size "86 MB">
11 <!ENTITY gcc-ada-buildsize "5.1 GB (0.7 GB added if GNAT install dir is not removed)">
12 <!ENTITY gcc-ada-time "114 SBU (including 72 SBU for tests)">
13
14 <!ENTITY gnat-download-http "https://libre.adacore.com/download/">
15 <!ENTITY gnat-64-download-http "http://mirrors.cdn.adacore.com/art/7427735035ecc98968ebfcee17494161b0de28ef">
16 <!ENTITY gnat-64-md5sum "c0863ed75109b5aa737becfd5a6ec038">
17 <!ENTITY gnat-64-size "225 MB">
18 <!ENTITY gnat-32-download-http "http://mirrors.cdn.adacore.com/art/3fc05fc61cbc7ab4f291ed19ea4cb269fffd17bd">
19 <!ENTITY gnat-32-md5sum "69423c7ad8d9759377d4fff71a78992d">
20 <!ENTITY gnat-32-size "222 MB">
21]>
22
23<sect1 id="gcc-ada" xreflabel="GCC-Ada-&gcc-version;">
24 <?dbhtml filename="gcc-ada.html" ?>
25
26 <sect1info>
27 <othername>$LastChangedBy$</othername>
28 <date>$Date$</date>
29 </sect1info>
30
31 <title>GCC-Ada-&gcc-version;</title>
32
33 <indexterm zone="gcc-ada">
34 <primary sortas="a-gcc-4-0">GCC-Ada&gcc-version;</primary>
35 </indexterm>
36
37 <sect2 role="package">
38 <title>Introduction to the GCC Ada compiler</title>
39
40 <para>Ada is a modern programming language designed for large, long-lived
41 applications &mdash; and embedded systems in particular &mdash; where
42 reliability and efficiency are essential. It has a set of unique technical
43 features that make it highly effective for use in large, complex and
44 safety-critical projects.</para>
45
46 <para>The compiler and associated tools on this page are known as the
47 <application>GNAT</application> technology, developed by the Adacore
48 company, using the <application>GCC</application> backend. Since
49 parts of the Ada compiler are written in Ada, there is a circular
50 dependency on an Ada compiler. The instructions below first install
51 a binary compiler.</para>
52
53 &lfs77_checked;
54
55 <caution>
56 <para>Using the instructions on this page will have the effect that
57 the C and C++ compiler and libraries will be reinstalled, overwriting
58 the ones on your system. This may lead to some issues. Please read the
59 notes and caution on the <xref linkend="gcc"/> page.</para>
60 </caution>
61
62 <bridgehead renderas="sect3">Package Information</bridgehead>
63 <itemizedlist spacing="compact">
64 <listitem>
65 <para>Download (HTTP): <ulink url="&gcc-download-http;"/></para>
66 </listitem>
67 <listitem>
68 <para>Download (FTP): <ulink url="&gcc-download-ftp;"/></para>
69 </listitem>
70 <listitem>
71 <para>Download MD5 sum: &gcc-md5sum;</para>
72 </listitem>
73 <listitem>
74 <para>Download size: &gcc-size;</para>
75 </listitem>
76 <listitem>
77 <para>Estimated disk space required: &gcc-ada-buildsize;</para>
78 </listitem>
79 <listitem>
80 <para>Estimated build time: &gcc-ada-time;</para>
81 </listitem>
82 </itemizedlist>
83
84 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
85 <note>
86 <para>You will need to install <application>GNAT</application>
87 temporarily to satisfy the circular dependency. You may point your
88 browser to the <ulink url="&gnat-download-http;">AdaCore download
89 page</ulink>, choose your platform and 2014, then select the file
90 to download. Alternatively, direct links to the 64 bit and 32 bit
91 linux versions are given below.</para>
92 </note>
93
94 <itemizedlist spacing="compact">
95 <listitem>
96 <para>
97 GNAT 64 bit binary: <ulink url="&gnat-64-download-http;"/>
98 </para>
99 </listitem>
100 <listitem>
101 <para>
102 GNAT 64 bit MD5 sum: &gnat-64-md5sum;
103 </para>
104 </listitem>
105 <listitem>
106 <para>
107 GNAT 64 bit size: &gnat-64-size;
108 </para>
109 </listitem>
110 <listitem>
111 <para>
112 GNAT 32 bit binary: <ulink url="&gnat-32-download-http;"/>
113 </para>
114 </listitem>
115 <listitem>
116 <para>
117 GNAT 32 bit MD5 sum: &gnat-32-md5sum;
118 </para>
119 </listitem>
120 <listitem>
121 <para>
122 GNAT 32 bit size: &gnat-32-size;
123 </para>
124 </listitem>
125<!-- <listitem>
126 <para>
127 Required patch:
128 <ulink url="&patch-root;/gcc-&gcc-version;-upstream_fixes-1.patch"/>
129 </para>
130 </listitem>-->
131 </itemizedlist>
132
133 <bridgehead renderas="sect3">GCC Ada Dependencies</bridgehead>
134
135 <bridgehead renderas="sect4">Recommended</bridgehead>
136 <para role="recommended">
137 <xref linkend="dejagnu"/>, for tests
138 </para>
139
140 <para condition="html" role="usernotes">User Notes:
141 <ulink url="&blfs-wiki;/gcc-ada"/></para>
142
143 </sect2>
144
145 <sect2 role="installation">
146 <title>Installation of the GNAT binary</title>
147
148 <para>Before unpacking and changing into the GCC source directory, first
149 unpack the <application>GNAT</application> tarball, and change to the
150 GNAT directory. Then, install the <application>GNAT</application> binary
151 by running the following command as the
152 <systemitem class="username">root</systemitem> user:</para>
153
154<screen role="root"><userinput>make ins-all prefix=/opt/gnat</userinput></screen>
155
156 <para>The <application>GNAT</application> compiler can be invoked by
157 executing the <command>gcc</command> binary installed in <filename
158 class="directory">/opt/gnat/bin</filename>.</para>
159
160 <para>You may now remove the <application>GNAT</application>
161 source directory if desired.</para>
162
163 <para>Prepare to compile <application>GCC</application> by placing the
164 <application>GNAT</application> version of <command>gcc</command> at the
165 beginning of the <envar>PATH</envar> variable by using the following
166 commands:</para>
167
168<screen><userinput>PATH_HOLD=$PATH &amp;&amp;
169export PATH=/opt/gnat/bin:$PATH_HOLD</userinput></screen>
170
171 <para>Doing so has the drawback that the <application>GCC</application>
172 and <application>Binutils</application> executables are taken
173 from the just installed <application>GNAT</application> package, but the
174 versions of those executables are outdated compared to those installed in
175 LFS. This is not important for the <application>GCC</application> compilers,
176 since they recompile themselves during the bootstrap process. On the other
177 hand, the outdated <command>ld</command> and <command>as</command> tools
178 are used all along. In order to use the LFS tools, issue as the
179 <systemitem class="username">root</systemitem> user:</para>
180
181<screen role="root"><userinput>find /opt/gnat -name ld -exec mv -v {} {}.old \;
182find /opt/gnat -name as -exec mv -v {} {}.old \;</userinput></screen>
183
184 </sect2>
185
186 <sect2 role="installation">
187 <title>Installation of GCC Ada</title>
188<!--
189 <para>As in LFS, fix a problem identified upstream:</para>
190
191<screen><userinput>sed -i 's/if \((code.*))\)/if (\1 \&amp;\&amp; \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c</userinput></screen>
192-->
193
194 <para>Install <application>GCC Ada</application> by running the
195 following commands:</para>
196
197<screen><userinput><!--
198patch -Np1 -i ../gcc-&gcc-version;-upstream_fixes-1.patch &amp;&amp;
199-->mkdir ../gcc-build &amp;&amp;
200cd ../gcc-build &amp;&amp;
201
202../gcc-&gcc-version;/configure \
203 --prefix=/usr \
204 --libdir=/usr/lib \
205 --enable-shared \
206 --enable-threads=posix \
207 --enable-__cxa_atexit \
208 --enable-clocale=gnu \
209 --disable-multilib \
210 --with-system-zlib \
211 --enable-languages=ada &amp;&amp;
212make</userinput></screen>
213
214 <para>If you have installed additional packages such as
215 <application>Valgrind</application> and <application>GDB</application>,
216 the <application>GCC</application> part of the testsuite will run more
217 tests than in LFS. Some of those will report FAIL and others XPASS
218 (pass when expected to FAIL). To run the tests, issue:</para>
219
220<screen><userinput>ulimit -s 32768 &amp;&amp;
221make -k check</userinput></screen>
222<!-- The command above may error out, so using && may prevent the summary
223to be run. -->
224
225 <para>The tests are very long, and the results may be hard to find in the
226 logs, specially if you use parallel jobs with make. You can get a summary
227 of the tests with:</para>
228
229<screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen>
230
231 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
232
233<screen role="root"><userinput>make install &amp;&amp;
234
235mkdir -pv /usr/share/gdb/auto-load/usr/lib &amp;&amp;
236mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &amp;&amp;
237
238chown -v -R root:root \
239 /usr/lib/gcc/*linux-gnu/&gcc-version;/include{,-fixed} \
240 /usr/lib/gcc/*linux-gnu/&gcc-version;/ada{lib,include}</userinput></screen>
241
242 <para>You should now remove the <application>GNAT</application>
243 installation and perform other cleanups:</para>
244
245<screen><userinput>rm -rf /opt/gnat &amp;&amp;
246export PATH=$PATH_HOLD &amp;&amp;
247unset PATH_HOLD</userinput></screen>
248
249 </sect2>
250
251 <sect2 role="commands">
252 <title>Command Explanations</title>
253<!--
254 <para>
255 <command>patch ... gcc-&gcc-version;-upstream_fixes-1.patch</command>:
256 This patch corrects bugs in the C++ compiler, which lead to
257 segmentation faults in some cases.
258 </para>
259-->
260
261 <para><command>mkdir ../gcc-build; cd ../gcc-build</command>: The
262 <application>GCC</application> documentation recommends
263 building the package in a dedicated build directory.</para>
264
265 <para><parameter>--enable-shared --enable-threads=posix
266 --enable-__cxa_atexit</parameter>: These parameters are required to build
267 the <application>C++</application> libraries to published standards.</para>
268
269 <para><parameter>--enable-clocale=gnu</parameter>: This parameter is a
270 failsafe for incomplete locale data.</para>
271
272 <para><parameter>--disable-multilib</parameter>: This parameter ensures
273 that files are created for the specific architecture of your computer.</para>
274
275 <para>
276 <parameter>--with-system-zlib</parameter>: Uses the system
277 <application>zlib</application> instead of the bundled one.
278 <application>zlib</application> is used for compressing
279 and uncompressing <application>GCC</application>'s intermediate
280 language in LTO (Link Time Optimization) object files.
281 </para>
282
283 <para>
284 <parameter>--enable-languages=ada</parameter>: Instructs the build system
285 to build the Ada tools and compiler. It is unavoidable that the
286 <application>C</application> and <application>C++</application>
287 compilers be built too.
288 </para>
289
290 <para><command>ulimit -s 32768</command>: This command prevents several
291 tests from running out of stack space.</para>
292
293 <para><command>make -k check</command>: This command runs the test suite
294 without stopping if any errors are encountered.</para>
295
296 <para><command>../gcc-&gcc-version;/contrib/test_summary</command>: This
297 command will produce a summary of the test suite results. You can append
298 <command>| grep -A7 Summ</command> to the command to produce an even more
299 condensed version of the summary. You may also wish to redirect the output
300 to a file for review and comparison later on.</para>
301
302 <para><command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>:
303 If the package is built by a user other than root, the ownership of the
304 installed <filename class="directory">include</filename> and
305 <filename class="directory">adalib</filename> directories (and their
306 contents) will be incorrect. These commands change the ownership to the
307 <systemitem class="username">root</systemitem> user and group.</para>
308
309 </sect2>
310
311 <sect2 role="content">
312 <title>Contents</title>
313
314 <segmentedlist>
315 <segtitle>Installed Programs</segtitle>
316 <segtitle>Installed Libraries</segtitle>
317 <segtitle>Installed Directories</segtitle>
318
319 <seglistitem>
320 <seg>
321 gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnatkr,
322 gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref,
323 and a run-time executable, gnat1, in <filename class="directory">
324 /usr/libexec/&lt;arch-triplet&gt;/&gcc-version;</filename>
325 </seg>
326 <seg>
327 libgnat.{so,a}, libgnarl.{so,a} in <filename class="directory">
328 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-version;/adalib</filename>
329 </seg>
330 <seg>
331 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-version;/ada{include,lib}
332 </seg>
333 </seglistitem>
334 </segmentedlist>
335
336 <para>Only the Ada specific files are listed here. Others can be found at
337 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were
338 initially installed during the building of LFS.</para>
339
340 <variablelist>
341 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
342 <?dbfo list-presentation="list"?>
343 <?dbhtml list-presentation="table"?>
344
345 <varlistentry id="gnat">
346 <term><command>gnat</command></term>
347 <listitem>
348 <para>is a wrapper that accepts a number of commands and calls
349 the corresponding tool from the list below.</para>
350 <indexterm zone="gcc-ada gnat">
351 <primary sortas="b-gnat">gnat</primary>
352 </indexterm>
353 </listitem>
354 </varlistentry>
355
356 <varlistentry id="gnatbind">
357 <term><command>gnatbind</command></term>
358 <listitem>
359 <para>is used to bind compiled objects.</para>
360 <indexterm zone="gcc-ada gnatbind">
361 <primary sortas="b-gnatbind">gnatbind</primary>
362 </indexterm>
363 </listitem>
364 </varlistentry>
365
366 <varlistentry id="gnatchop">
367 <term><command>gnatchop</command></term>
368 <listitem>
369 <para>is useful for renaming files to meet the standard
370 <application>Ada</application> default file naming conventions.</para>
371 <indexterm zone="gcc-ada gnatchop">
372 <primary sortas="b-gnatchop">gnatchop</primary>
373 </indexterm>
374 </listitem>
375 </varlistentry>
376
377 <varlistentry id="gnatclean">
378 <term><command>gnatclean</command></term>
379 <listitem>
380 <para>is used to remove files associated with a
381 <application>GNAT</application> project.</para>
382 <indexterm zone="gcc-ada gnatclean">
383 <primary sortas="b-gnatclean">gnatclean</primary>
384 </indexterm>
385 </listitem>
386 </varlistentry>
387
388 <varlistentry id="gnatfind">
389 <term><command>gnatfind</command></term>
390 <listitem>
391 <para> is intended for locating definition and/or references to
392 specified entities in a <application>GNAT</application> project.</para>
393 <indexterm zone="gcc-ada gnatfind">
394 <primary sortas="b-gnatfind">gnatfind</primary>
395 </indexterm>
396 </listitem>
397 </varlistentry>
398
399 <varlistentry id="gnatkr">
400 <term><command>gnatkr</command></term>
401 <listitem>
402 <para>is used to determine the crunched name for a given file, when
403 crunched to a specified maximum length.</para>
404 <indexterm zone="gcc-ada gnatkr">
405 <primary sortas="b-gnatkr">gnatkr</primary>
406 </indexterm>
407 </listitem>
408 </varlistentry>
409
410 <varlistentry id="gnatlink">
411 <term><command>gnatlink</command></term>
412 <listitem>
413 <para>is used to link programs and build an executable file.</para>
414 <indexterm zone="gcc-ada gnatlink">
415 <primary sortas="b-gnatlink">gnatlink</primary>
416 </indexterm>
417 </listitem>
418 </varlistentry>
419
420 <varlistentry id="gnatls">
421 <term><command>gnatls</command></term>
422 <listitem>
423 <para>is the compiled unit browser.</para>
424 <indexterm zone="gcc-ada gnatls">
425 <primary sortas="b-gnatls">gnatls</primary>
426 </indexterm>
427 </listitem>
428 </varlistentry>
429
430 <varlistentry id="gnatmake">
431 <term><command>gnatmake</command></term>
432 <listitem>
433 <para>is the <application>Ada</application> compiler, which performs
434 compilaton, binding and linking.</para>
435 <indexterm zone="gcc-ada gnatmake">
436 <primary sortas="b-gnatmake">gnatmake</primary>
437 </indexterm>
438 </listitem>
439 </varlistentry>
440
441 <varlistentry id="gnatname">
442 <term><command>gnatname</command></term>
443 <listitem>
444 <para>will list the files associated with a
445 <application>GNAT</application> project.</para>
446 <indexterm zone="gcc-ada gnatname">
447 <primary sortas="b-gnatname">gnatname</primary>
448 </indexterm>
449 </listitem>
450 </varlistentry>
451
452 <varlistentry id="gnatprep">
453 <term><command>gnatprep</command></term>
454 <listitem>
455 <para>is the <application>GNAT</application> external
456 preprocessor.</para>
457 <indexterm zone="gcc-ada gnatprep">
458 <primary sortas="b-gnatprep">gnatprep</primary>
459 </indexterm>
460 </listitem>
461 </varlistentry>
462
463 <varlistentry id="gnatxref">
464 <term><command>gnatxref</command></term>
465 <listitem>
466 <para>is similar to <command>gnatfind</command>, but generates
467 a full report of all cross-references.</para>
468 <indexterm zone="gcc-ada gnatxref">
469 <primary sortas="b-gnatxref">gnatxref</primary>
470 </indexterm>
471 </listitem>
472 </varlistentry>
473
474 </variablelist>
475
476 </sect2>
477
478</sect1>
Note: See TracBrowser for help on using the repository browser.