source: archive/gcc-ada.xml

trunk
Last change on this file was 3f2db3a6, checked in by Pierre Labastie <pierre.labastie@…>, 17 months ago

Remove sect1info tags

They only contain a date tag that is nowhere used.

  • Property mode set to 100644
File size: 19.5 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 "&gnu-http;/gcc/gcc-&gcc-ada-version;/gcc-&gcc-ada-version;.tar.xz">
8 <!ENTITY gcc-download-ftp "&gnu-ftp;/gcc/gcc-&gcc-ada-version;/gcc-&gcc-ada-version;.tar.xz">
9 <!ENTITY gcc-md5sum "4ab282f414676496483b3e1793d07862">
10 <!ENTITY gcc-size "61 MB">
11 <!ENTITY gcc-ada-buildsize "7.0 GB (add 369 MB for tests, add 1.6 GB if GNAT install dir is not removed)">
12 <!ENTITY gcc-ada-time "25 SBU (with parallelism=4, add 92 SBU for tests)">
13
14 <!-- Keeping these the same because the new GNAT binary for x86_64
15 Requires Qt4 and a GUI to install. The i686 one is being tested
16 seperately from this update.-->
17 <!ENTITY gnat-download-http "https://libre.adacore.com/download/">
18 <!ENTITY gnat-64-download-http "http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7">
19 <!ENTITY gnat-64-md5sum "226dac83d9e6490fc8542ac0934a1db0">
20 <!ENTITY gnat-64-size "473 MB">
21 <!ENTITY gnat-32-download-http "http://mirrors.cdn.adacore.com/art/564b3e9dc8e196b040fbe248">
22 <!ENTITY gnat-32-md5sum "69423c7ad8d9759377d4fff71a78992d">
23 <!ENTITY gnat-32-size "222 MB">
24]>
25
26<sect1 id="gcc-ada" xreflabel="GCC-Ada-&gcc-ada-version;">
27 <?dbhtml filename="gcc-ada.html" ?>
28
29
30 <title>GCC-Ada-&gcc-ada-version;</title>
31
32 <indexterm zone="gcc-ada">
33 <primary sortas="a-gcc-ada">GCC-Ada-&gcc-ada-version;</primary>
34 </indexterm>
35
36 <sect2 role="package">
37 <title>Introduction to the GCC Ada compiler</title>
38
39 <para>
40 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.
45 </para>
46
47 <para>
48 The compiler and associated tools on this page are known as the
49 <application>GNAT</application> technology, developed by the Adacore
50 company, using the <application>GCC</application> backend. Since
51 parts of the Ada compiler are written in Ada, there is a circular
52 dependency on an Ada compiler. The instructions below first install
53 a binary compiler. You do not need to do that if you already have built
54 <application>GNAT</application> tools.
55 </para>
56
57 &lfs84_checked;
58
59 <caution>
60 <para>
61 Using the instructions on this page will have the effect that
62 the C and C++ compiler and libraries will be reinstalled, overwriting
63 the ones on your system. This may lead to some issues. Please read the
64 notes and caution on the <xref linkend="gcc"/> page.
65 </para>
66 </caution>
67
68 <note>
69 <para>
70 If you want to install other compilers in the <application>GCC
71 </application> collection, simply add them to the
72 <parameter>--enable-languages</parameter> parameter for <command>
73 configure</command>. If you rebuild <application>GCC</application>
74 without enabling ada after running the instructions on this page,
75 the new compiler will not be able to compile ADA anymore. If you already
76 have ADA instaled, you do not need to use the instructions on this page,
77 simply add <parameter>ada</parameter> to the
78 <parameter>--enable-languages</parameter> parameter using the
79 instructions from <xref linkend="gcc"/>.
80 </para>
81 </note>
82
83 <bridgehead renderas="sect3">Package Information</bridgehead>
84 <itemizedlist spacing="compact">
85 <listitem>
86 <para>
87 Download (HTTP): <ulink url="&gcc-download-http;"/>
88 </para>
89 </listitem>
90 <listitem>
91 <para>
92 Download (FTP): <ulink url="&gcc-download-ftp;"/>
93 </para>
94 </listitem>
95 <listitem>
96 <para>
97 Download MD5 sum: &gcc-md5sum;
98 </para>
99 </listitem>
100 <listitem>
101 <para>
102 Download size: &gcc-size;
103 </para>
104 </listitem>
105 <listitem>
106 <para>
107 Estimated disk space required: &gcc-ada-buildsize;
108 </para>
109 </listitem>
110 <listitem>
111 <para>
112 Estimated build time: &gcc-ada-time;
113 </para>
114 </listitem>
115 </itemizedlist>
116
117 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
118 <note>
119 <!-- gnat-2018 uses graphical installer, stick to 2017 -->
120 <para>
121 You will need to install <application>GNAT</application>
122 temporarily to satisfy the circular dependency. You may point your
123 browser to the <ulink url="&gnat-download-http;">AdaCore download
124 page</ulink>, choose your platform and 2017 (64 bit machines) or
125 2014 (32 bit machines), then select the file
126 to download. Alternatively, direct links to the 64 bit and 32 bit
127 linux versions are given below.
128 </para>
129 </note>
130
131 <itemizedlist spacing="compact">
132 <listitem>
133 <para>
134 GNAT 64 bit binary: <ulink url="&gnat-64-download-http;"/>
135 </para>
136 </listitem>
137 <listitem>
138 <para>
139 GNAT 64 bit MD5 sum: &gnat-64-md5sum;
140 </para>
141 </listitem>
142 <listitem>
143 <para>
144 GNAT 64 bit size: &gnat-64-size;
145 </para>
146 </listitem>
147 <listitem>
148 <para>
149 GNAT 32 bit binary: <ulink url="&gnat-32-download-http;"/>
150 </para>
151 </listitem>
152 <listitem>
153 <para>
154 GNAT 32 bit MD5 sum: &gnat-32-md5sum;
155 </para>
156 </listitem>
157 <listitem>
158 <para>
159 GNAT 32 bit size: &gnat-32-size;
160 </para>
161 </listitem>
162<!--
163 <listitem>
164 <para>
165 Required patch:
166 <ulink url="&patch-root;/gcc-&gcc-ada-version;-upstream_fixes-1.patch"/>
167 </para>
168 </listitem>
169-->
170 </itemizedlist>
171
172 <bridgehead renderas="sect3">GCC Ada Dependencies</bridgehead>
173
174 <bridgehead renderas="sect4">Recommended</bridgehead>
175 <para role="recommended">
176 <xref linkend="dejagnu"/>, for tests
177 </para>
178
179 <bridgehead renderas="sect4">Optional</bridgehead>
180 <para role="optional">
181 <xref linkend="gdb"/> and
182 <xref linkend="valgrind"/> (for tests)
183 </para>
184
185 <para condition="html" role="usernotes">User Notes:
186 <ulink url="&blfs-wiki;/gcc-ada"/></para>
187
188 </sect2>
189
190 <sect2 role="installation">
191 <title>Installation of the GNAT binary</title>
192
193 <para>
194 Before unpacking and changing into the GCC source directory, first
195 unpack the <application>GNAT</application> tarball, and change to the
196 GNAT directory. Then, install the <application>GNAT</application> binary
197 by running the following command as the
198 <systemitem class="username">root</systemitem> user:
199 </para>
200
201<screen role="root"><userinput>make ins-all prefix=/opt/gnat</userinput></screen>
202
203 <para>
204 The <application>GNAT</application> compiler can be invoked by
205 executing the <command>gcc</command> binary installed in <filename
206 class="directory">/opt/gnat/bin</filename>.
207 </para>
208
209 <para>
210 You may now remove the <application>GNAT</application>
211 source directory if desired.
212 </para>
213
214 <para>
215 Prepare to compile <application>GCC</application> by placing the
216 <application>GNAT</application> version of <command>gcc</command> at the
217 beginning of the <envar>PATH</envar> variable by using the following
218 commands:
219 </para>
220
221<screen><userinput>PATH_HOLD=$PATH &amp;&amp;
222export PATH=/opt/gnat/bin:$PATH_HOLD</userinput></screen>
223
224 <para>
225 Doing so has the drawback that the <application>GCC</application>
226 and <application>Binutils</application> executables are taken
227 from the just installed <application>GNAT</application> package, but the
228 versions of those executables are outdated compared to those installed in
229 LFS. This is not important for the <application>GCC</application> compilers,
230 since they recompile themselves during the bootstrap process. On the other
231 hand, the outdated <command>ld</command> and <command>as</command> tools
232 are used all along. In order to use the LFS tools, issue as the
233 <systemitem class="username">root</systemitem> user:
234 </para>
235
236<screen role="root"><userinput>find /opt/gnat -name ld -exec mv -v {} {}.old \;
237find /opt/gnat -name as -exec mv -v {} {}.old \;</userinput></screen>
238
239 </sect2>
240
241 <sect2 role="installation">
242 <title>Installation of GCC Ada</title>
243
244 <para>
245 Install <application>GCC Ada</application> by running the
246 following commands:
247 </para>
248
249<screen><userinput>case $(uname -m) in
250 x86_64)
251 sed -e '/m64=/s/lib64/lib/' \
252 -i.orig gcc/config/i386/t-linux64
253 ;;
254esac
255
256mkdir build &amp;&amp;
257cd build &amp;&amp;
258
259../configure \
260 --prefix=/usr \
261 --disable-multilib \
262 --disable-libmpx \
263 --with-system-zlib \
264 --enable-languages=ada &amp;&amp;
265make</userinput></screen>
266
267 <para>
268 If you have installed additional packages such as
269 <application>Valgrind</application> and <application>GDB</application>,
270 the <application>GCC</application> part of the testsuite will run more
271 tests than in LFS. Some of those will report FAIL and others XPASS
272 (pass when expected to FAIL). To run the tests, issue:
273 </para>
274
275<screen><userinput>ulimit -s 32768 &amp;&amp;
276make -k check</userinput></screen>
277<!-- The command above may error out, so using && may prevent the summary
278to be run. -->
279
280 <para>
281 The tests are very long, and the results may be hard to find in the
282 logs, specially if you use parallel jobs with make. You can get a summary
283 of the tests with:
284 </para>
285
286<screen><userinput>../contrib/test_summary</userinput></screen>
287
288 <para>
289 Now, as the <systemitem class="username">root</systemitem> user:
290 </para>
291
292<screen role="root"><userinput>make install &amp;&amp;
293mkdir -pv /usr/share/gdb/auto-load/usr/lib &amp;&amp;
294mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &amp;&amp;
295
296chown -v -R root:root \
297 /usr/lib/gcc/*linux-gnu/&gcc-ada-version;/include{,-fixed} \
298 /usr/lib/gcc/*linux-gnu/&gcc-ada-version;/ada{lib,include}</userinput></screen>
299
300 <para>
301 You should now remove the <application>GNAT</application>
302 installation and perform other cleanups. First, as the <systemitem
303 class="username">root</systemitem> user:
304 </para>
305
306<screen role="root"><userinput>rm -rf /opt/gnat</userinput></screen>
307
308 <para>
309 Then, as a normal user:
310 </para>
311
312<screen><userinput>export PATH=$PATH_HOLD &amp;&amp;
313unset PATH_HOLD</userinput></screen>
314
315 </sect2>
316
317 <sect2 role="commands">
318 <title>Command Explanations</title>
319
320 <para>
321 <command>mkdir build; cd build</command>: The
322 <application>GCC</application> documentation recommends
323 building the package in a dedicated build directory.
324 </para>
325
326 <para>
327 <parameter>--disable-multilib</parameter>: This parameter ensures
328 that files are created for the specific architecture of your computer.
329 </para>
330
331 <para>
332 <parameter>--with-system-zlib</parameter>: Uses the system
333 <application>zlib</application> instead of the bundled one.
334 <application>zlib</application> is used for compressing
335 and uncompressing <application>GCC</application>'s intermediate
336 language in LTO (Link Time Optimization) object files.
337 </para>
338
339 <para>
340 <parameter>--enable-languages=ada</parameter>: Instructs the build system
341 to build the Ada tools and compiler. It is unavoidable that the
342 <application>C</application> and <application>C++</application>
343 compilers be built too.
344 </para>
345
346 <!-- Unlike standard GCC, removing this could break compatibility
347 with the GNAT binary for i686 because it uses gcc-4.7.3 in the
348 binary. Leave it alone until tested. -->
349 <para>
350 <option>--with-default-libstdcxx-abi=gcc4-compatible</option>: Use this
351 switch if you are building <application>GNAT</application> tools using a
352 <application>GCC</application> version prior to 5.1.0,
353 and you do not want to recompile all the libraries written in C++.
354 </para>
355
356 <para>
357 <command>ulimit -s 32768</command>: This command prevents several
358 tests from running out of stack space.
359 </para>
360
361 <para>
362 <command>make -k check</command>: This command runs the test suite
363 without stopping if any errors are encountered.
364 </para>
365
366 <para>
367 <command>../contrib/test_summary</command>: This
368 command will produce a summary of the test suite results. You can append
369 <command>| grep -A7 Summ</command> to the command to produce an even more
370 condensed version of the summary. You may also wish to redirect the output
371 to a file for review and comparison later on.
372 </para>
373
374 <para>
375 <command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>:
376 If the package is built by a user other than root, the ownership of the
377 installed <filename class="directory">include</filename> and
378 <filename class="directory">adalib</filename> directories (and their
379 contents) will be incorrect. These commands change the ownership to the
380 <systemitem class="username">root</systemitem> user and group.
381 </para>
382
383 </sect2>
384
385 <sect2 role="content">
386 <title>Contents</title>
387
388 <segmentedlist>
389 <segtitle>Installed Programs</segtitle>
390 <segtitle>Installed Libraries</segtitle>
391 <segtitle>Installed Directories</segtitle>
392
393 <seglistitem>
394 <seg>
395 gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnatkr,
396 gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref
397 </seg>
398 <seg>
399 libgnarl.{so,a}, libgnat.{so,a} in <filename class="directory">
400 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/adalib</filename>
401 </seg>
402 <seg>
403 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/ada{include,lib}
404 and /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/plugin/include/ada
405 </seg>
406 </seglistitem>
407 </segmentedlist>
408
409 <para>
410 Only the Ada specific files are listed here. Others can be found at
411 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were
412 initially installed during the building of LFS.
413 </para>
414
415 <variablelist>
416 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
417 <?dbfo list-presentation="list"?>
418 <?dbhtml list-presentation="table"?>
419
420 <varlistentry id="gnat">
421 <term><command>gnat</command></term>
422 <listitem>
423 <para>
424 is a wrapper that accepts a number of commands and calls
425 the corresponding tool from the list below.
426 </para>
427 <indexterm zone="gcc-ada gnat">
428 <primary sortas="b-gnat">gnat</primary>
429 </indexterm>
430 </listitem>
431 </varlistentry>
432
433 <varlistentry id="gnatbind">
434 <term><command>gnatbind</command></term>
435 <listitem>
436 <para>
437 is used to bind compiled objects.
438 </para>
439 <indexterm zone="gcc-ada gnatbind">
440 <primary sortas="b-gnatbind">gnatbind</primary>
441 </indexterm>
442 </listitem>
443 </varlistentry>
444
445 <varlistentry id="gnatchop">
446 <term><command>gnatchop</command></term>
447 <listitem>
448 <para>
449 is useful for renaming files to meet the standard
450 <application>Ada</application> default file naming conventions.
451 </para>
452 <indexterm zone="gcc-ada gnatchop">
453 <primary sortas="b-gnatchop">gnatchop</primary>
454 </indexterm>
455 </listitem>
456 </varlistentry>
457
458 <varlistentry id="gnatclean">
459 <term><command>gnatclean</command></term>
460 <listitem>
461 <para>
462 is used to remove files associated with a
463 <application>GNAT</application> project.
464 </para>
465 <indexterm zone="gcc-ada gnatclean">
466 <primary sortas="b-gnatclean">gnatclean</primary>
467 </indexterm>
468 </listitem>
469 </varlistentry>
470
471 <varlistentry id="gnatfind">
472 <term><command>gnatfind</command></term>
473 <listitem>
474 <para>
475 is intended for locating definition and/or references to
476 specified entities in a <application>GNAT</application> project.
477 </para>
478 <indexterm zone="gcc-ada gnatfind">
479 <primary sortas="b-gnatfind">gnatfind</primary>
480 </indexterm>
481 </listitem>
482 </varlistentry>
483
484 <varlistentry id="gnatkr">
485 <term><command>gnatkr</command></term>
486 <listitem>
487 <para>
488 is used to determine the crunched name for a given file, when
489 crunched to a specified maximum length.
490 </para>
491 <indexterm zone="gcc-ada gnatkr">
492 <primary sortas="b-gnatkr">gnatkr</primary>
493 </indexterm>
494 </listitem>
495 </varlistentry>
496
497 <varlistentry id="gnatlink">
498 <term><command>gnatlink</command></term>
499 <listitem>
500 <para>
501 is used to link programs and build an executable file.
502 </para>
503 <indexterm zone="gcc-ada gnatlink">
504 <primary sortas="b-gnatlink">gnatlink</primary>
505 </indexterm>
506 </listitem>
507 </varlistentry>
508
509 <varlistentry id="gnatls">
510 <term><command>gnatls</command></term>
511 <listitem>
512 <para>
513 is the compiled unit browser.
514 </para>
515 <indexterm zone="gcc-ada gnatls">
516 <primary sortas="b-gnatls">gnatls</primary>
517 </indexterm>
518 </listitem>
519 </varlistentry>
520
521 <varlistentry id="gnatmake">
522 <term><command>gnatmake</command></term>
523 <listitem>
524 <para>
525 is the <application>Ada</application> compiler, which performs
526 compilation, binding and linking.
527 </para>
528 <indexterm zone="gcc-ada gnatmake">
529 <primary sortas="b-gnatmake">gnatmake</primary>
530 </indexterm>
531 </listitem>
532 </varlistentry>
533
534 <varlistentry id="gnatname">
535 <term><command>gnatname</command></term>
536 <listitem>
537 <para>
538 will list the files associated with a
539 <application>GNAT</application> project.
540 </para>
541 <indexterm zone="gcc-ada gnatname">
542 <primary sortas="b-gnatname">gnatname</primary>
543 </indexterm>
544 </listitem>
545 </varlistentry>
546
547 <varlistentry id="gnatprep">
548 <term><command>gnatprep</command></term>
549 <listitem>
550 <para>
551 is the <application>GNAT</application> external preprocessor.
552 </para>
553 <indexterm zone="gcc-ada gnatprep">
554 <primary sortas="b-gnatprep">gnatprep</primary>
555 </indexterm>
556 </listitem>
557 </varlistentry>
558
559 <varlistentry id="gnatxref">
560 <term><command>gnatxref</command></term>
561 <listitem>
562 <para>
563 is similar to <command>gnatfind</command>, but generates
564 a full report of all cross-references.
565 </para>
566 <indexterm zone="gcc-ada gnatxref">
567 <primary sortas="b-gnatxref">gnatxref</primary>
568 </indexterm>
569 </listitem>
570 </varlistentry>
571
572 </variablelist>
573
574 </sect2>
575
576</sect1>
Note: See TracBrowser for help on using the repository browser.