source: general/prog/gcc-ada.xml@ 7ff0948

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

Update to boost-1.59.0
Update to ruby-2.2.3
Update to OpenSSH-7.0p1
Update to libreoffice-5.0.0
Update to unbound-1.5.4
Update to BIND and BIND-Utilities-9.10.2p3
Update to sendmail-8.15.2
Update to exim-4.86
Update to apache-2.4.16
Update to vsftpd-3.0.3
Update to mariadb-10.0.21
Update to postfix-3.0.2
Update to OpenLDAP-2.4.42
Update to stunnel-5.22
Update to GCC-5.2.0 (including the ADA and Java compilers)
Update to php-5.6.12

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

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