source: general/prog/gcc-ada.xml@ bed2286

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 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 bed2286 was bed2286, checked in by Pierre Labastie <pieere@…>, 8 years ago

GCC-6.1.0

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@17316 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-ada-version;/gcc-&gcc-ada-version;.tar.bz2">
8 <!ENTITY gcc-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc-ada-version;/gcc-&gcc-ada-version;.tar.bz2">
9 <!ENTITY gcc-md5sum "8fb6cb98b8459f5863328380fbf06bd1">
10 <!ENTITY gcc-size "95 MB">
11 <!ENTITY gcc-ada-buildsize "8.4 GB (0.9 GB added if GNAT install dir is not removed)">
12 <!ENTITY gcc-ada-time "48 SBU (with tests and parallelism=4)">
13
14 <!ENTITY gnat-download-http "https://libre.adacore.com/download/">
15 <!ENTITY gnat-64-download-http "http://mirrors.cdn.adacore.com/art/564b3e83c8e196b040fbdf29">
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/564b3e9dc8e196b040fbe248">
19 <!ENTITY gnat-32-md5sum "69423c7ad8d9759377d4fff71a78992d">
20 <!ENTITY gnat-32-size "222 MB">
21]>
22
23<sect1 id="gcc-ada" xreflabel="GCC-Ada-&gcc-ada-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-ada-version;</title>
32
33 <indexterm zone="gcc-ada">
34 <primary sortas="a-gcc-4-0">GCC-Ada&gcc-ada-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 &lfs79_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<!--
159 <listitem>
160 <para>
161 Required patch:
162 <ulink url="&patch-root;/gcc-&gcc-ada-version;-upstream_fixes-1.patch"/>
163 </para>
164 </listitem>
165-->
166 </itemizedlist>
167
168 <bridgehead renderas="sect3">GCC Ada Dependencies</bridgehead>
169
170 <bridgehead renderas="sect4">Recommended</bridgehead>
171 <para role="recommended">
172 <xref linkend="dejagnu"/>, for tests
173 </para>
174
175 <para condition="html" role="usernotes">User Notes:
176 <ulink url="&blfs-wiki;/gcc-ada"/></para>
177
178 </sect2>
179
180 <sect2 role="installation">
181 <title>Installation of the GNAT binary</title>
182
183 <para>
184 Before unpacking and changing into the GCC source directory, first
185 unpack the <application>GNAT</application> tarball, and change to the
186 GNAT directory. Then, install the <application>GNAT</application> binary
187 by running the following command as the
188 <systemitem class="username">root</systemitem> user:
189 </para>
190
191<screen role="root"><userinput>make ins-all prefix=/opt/gnat</userinput></screen>
192
193 <para>
194 The <application>GNAT</application> compiler can be invoked by
195 executing the <command>gcc</command> binary installed in <filename
196 class="directory">/opt/gnat/bin</filename>.
197 </para>
198
199 <para>
200 You may now remove the <application>GNAT</application>
201 source directory if desired.
202 </para>
203
204 <para>
205 Prepare to compile <application>GCC</application> by placing the
206 <application>GNAT</application> version of <command>gcc</command> at the
207 beginning of the <envar>PATH</envar> variable by using the following
208 commands:
209 </para>
210
211<screen><userinput>PATH_HOLD=$PATH &amp;&amp;
212export PATH=/opt/gnat/bin:$PATH_HOLD</userinput></screen>
213
214 <para>
215 Doing so has the drawback that the <application>GCC</application>
216 and <application>Binutils</application> executables are taken
217 from the just installed <application>GNAT</application> package, but the
218 versions of those executables are outdated compared to those installed in
219 LFS. This is not important for the <application>GCC</application> compilers,
220 since they recompile themselves during the bootstrap process. On the other
221 hand, the outdated <command>ld</command> and <command>as</command> tools
222 are used all along. In order to use the LFS tools, issue as the
223 <systemitem class="username">root</systemitem> user:
224 </para>
225
226<screen role="root"><userinput>find /opt/gnat -name ld -exec mv -v {} {}.old \;
227find /opt/gnat -name as -exec mv -v {} {}.old \;</userinput></screen>
228
229 </sect2>
230
231 <sect2 role="installation">
232 <title>Installation of GCC Ada</title>
233
234 <para>
235 Install <application>GCC Ada</application> by running the
236 following commands:
237 </para>
238
239<screen><userinput>mkdir build &amp;&amp;
240cd build &amp;&amp;
241
242../configure \
243 --prefix=/usr \
244 --disable-multilib \
245 --with-system-zlib \
246 --enable-languages=ada &amp;&amp;
247make</userinput></screen>
248
249 <para>
250 If you have installed additional packages such as
251 <application>Valgrind</application> and <application>GDB</application>,
252 the <application>GCC</application> part of the testsuite will run more
253 tests than in LFS. Some of those will report FAIL and others XPASS
254 (pass when expected to FAIL). To run the tests, issue:
255 </para>
256
257<screen><userinput>ulimit -s 32768 &amp;&amp;
258make -k check</userinput></screen>
259<!-- The command above may error out, so using && may prevent the summary
260to be run. -->
261
262 <para>
263 The tests are very long, and the results may be hard to find in the
264 logs, specially if you use parallel jobs with make. You can get a summary
265 of the tests with:
266 </para>
267
268<screen><userinput>../contrib/test_summary</userinput></screen>
269
270 <para>
271 Now, as the <systemitem class="username">root</systemitem> user:
272 </para>
273
274<screen role="root"><userinput>make install &amp;&amp;
275
276mkdir -pv /usr/share/gdb/auto-load/usr/lib &amp;&amp;
277mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &amp;&amp;
278
279chown -v -R root:root \
280 /usr/lib/gcc/*linux-gnu/&gcc-ada-version;/include{,-fixed} \
281 /usr/lib/gcc/*linux-gnu/&gcc-ada-version;/ada{lib,include}</userinput></screen>
282
283 <para>
284 You should now remove the <application>GNAT</application>
285 installation and perform other cleanups. First, as the <systemitem
286 class="username">root</systemitem> user:
287 </para>
288
289<screen role="root"><userinput>rm -rf /opt/gnat</userinput></screen>
290
291 <para>
292 Then, as a normal user:
293 </para>
294
295<screen><userinput>export PATH=$PATH_HOLD &amp;&amp;
296unset PATH_HOLD</userinput></screen>
297
298 </sect2>
299
300 <sect2 role="commands">
301 <title>Command Explanations</title>
302
303 <para>
304 <command>mkdir build; cd build</command>: The
305 <application>GCC</application> documentation recommends
306 building the package in a dedicated build directory.
307 </para>
308
309 <para>
310 <parameter>--disable-multilib</parameter>: This parameter ensures
311 that files are created for the specific architecture of your computer.
312 </para>
313
314 <para>
315 <parameter>--with-system-zlib</parameter>: Uses the system
316 <application>zlib</application> instead of the bundled one.
317 <application>zlib</application> is used for compressing
318 and uncompressing <application>GCC</application>'s intermediate
319 language in LTO (Link Time Optimization) object files.
320 </para>
321
322 <para>
323 <parameter>--enable-languages=ada</parameter>: Instructs the build system
324 to build the Ada tools and compiler. It is unavoidable that the
325 <application>C</application> and <application>C++</application>
326 compilers be built too.
327 </para>
328
329 <para>
330 <option>--with-default-libstdcxx-abi=gcc4-compatible</option>: Use this
331 switch if you are building <application>GNAT</application> tools using a
332 <application>GCC</application> version prior to 5.1.0,
333 and you do not want to recompile all the libraries written in C++.
334 </para>
335
336 <para>
337 <command>ulimit -s 32768</command>: This command prevents several
338 tests from running out of stack space.
339 </para>
340
341 <para>
342 <command>make -k check</command>: This command runs the test suite
343 without stopping if any errors are encountered.
344 </para>
345
346 <para>
347 <command>../contrib/test_summary</command>: This
348 command will produce a summary of the test suite results. You can append
349 <command>| grep -A7 Summ</command> to the command to produce an even more
350 condensed version of the summary. You may also wish to redirect the output
351 to a file for review and comparison later on.
352 </para>
353
354 <para>
355 <command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>:
356 If the package is built by a user other than root, the ownership of the
357 installed <filename class="directory">include</filename> and
358 <filename class="directory">adalib</filename> directories (and their
359 contents) will be incorrect. These commands change the ownership to the
360 <systemitem class="username">root</systemitem> user and group.
361 </para>
362
363 </sect2>
364
365 <sect2 role="content">
366 <title>Contents</title>
367
368 <segmentedlist>
369 <segtitle>Installed Programs</segtitle>
370 <segtitle>Installed Libraries</segtitle>
371 <segtitle>Installed Directories</segtitle>
372
373 <seglistitem>
374 <seg>
375 gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnatkr,
376 gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref
377 </seg>
378 <seg>
379 libgnarl.{so,a}, libgnat.{so,a} in <filename class="directory">
380 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/adalib</filename>
381 </seg>
382 <seg>
383 /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/ada{include,lib}
384 and /usr/lib/gcc/&lt;arch-triplet&gt;/&gcc-ada-version;/plugin/include/ada
385 </seg>
386 </seglistitem>
387 </segmentedlist>
388
389 <para>
390 Only the Ada specific files are listed here. Others can be found at
391 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were
392 initially installed during the building of LFS.
393 </para>
394
395 <variablelist>
396 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
397 <?dbfo list-presentation="list"?>
398 <?dbhtml list-presentation="table"?>
399
400 <varlistentry id="gnat">
401 <term><command>gnat</command></term>
402 <listitem>
403 <para>
404 is a wrapper that accepts a number of commands and calls
405 the corresponding tool from the list below.
406 </para>
407 <indexterm zone="gcc-ada gnat">
408 <primary sortas="b-gnat">gnat</primary>
409 </indexterm>
410 </listitem>
411 </varlistentry>
412
413 <varlistentry id="gnatbind">
414 <term><command>gnatbind</command></term>
415 <listitem>
416 <para>
417 is used to bind compiled objects.
418 </para>
419 <indexterm zone="gcc-ada gnatbind">
420 <primary sortas="b-gnatbind">gnatbind</primary>
421 </indexterm>
422 </listitem>
423 </varlistentry>
424
425 <varlistentry id="gnatchop">
426 <term><command>gnatchop</command></term>
427 <listitem>
428 <para>
429 is useful for renaming files to meet the standard
430 <application>Ada</application> default file naming conventions.
431 </para>
432 <indexterm zone="gcc-ada gnatchop">
433 <primary sortas="b-gnatchop">gnatchop</primary>
434 </indexterm>
435 </listitem>
436 </varlistentry>
437
438 <varlistentry id="gnatclean">
439 <term><command>gnatclean</command></term>
440 <listitem>
441 <para>
442 is used to remove files associated with a
443 <application>GNAT</application> project.
444 </para>
445 <indexterm zone="gcc-ada gnatclean">
446 <primary sortas="b-gnatclean">gnatclean</primary>
447 </indexterm>
448 </listitem>
449 </varlistentry>
450
451 <varlistentry id="gnatfind">
452 <term><command>gnatfind</command></term>
453 <listitem>
454 <para>
455 is intended for locating definition and/or references to
456 specified entities in a <application>GNAT</application> project.
457 </para>
458 <indexterm zone="gcc-ada gnatfind">
459 <primary sortas="b-gnatfind">gnatfind</primary>
460 </indexterm>
461 </listitem>
462 </varlistentry>
463
464 <varlistentry id="gnatkr">
465 <term><command>gnatkr</command></term>
466 <listitem>
467 <para>
468 is used to determine the crunched name for a given file, when
469 crunched to a specified maximum length.
470 </para>
471 <indexterm zone="gcc-ada gnatkr">
472 <primary sortas="b-gnatkr">gnatkr</primary>
473 </indexterm>
474 </listitem>
475 </varlistentry>
476
477 <varlistentry id="gnatlink">
478 <term><command>gnatlink</command></term>
479 <listitem>
480 <para>
481 is used to link programs and build an executable file.
482 </para>
483 <indexterm zone="gcc-ada gnatlink">
484 <primary sortas="b-gnatlink">gnatlink</primary>
485 </indexterm>
486 </listitem>
487 </varlistentry>
488
489 <varlistentry id="gnatls">
490 <term><command>gnatls</command></term>
491 <listitem>
492 <para>
493 is the compiled unit browser.
494 </para>
495 <indexterm zone="gcc-ada gnatls">
496 <primary sortas="b-gnatls">gnatls</primary>
497 </indexterm>
498 </listitem>
499 </varlistentry>
500
501 <varlistentry id="gnatmake">
502 <term><command>gnatmake</command></term>
503 <listitem>
504 <para>
505 is the <application>Ada</application> compiler, which performs
506 compilation, binding and linking.
507 </para>
508 <indexterm zone="gcc-ada gnatmake">
509 <primary sortas="b-gnatmake">gnatmake</primary>
510 </indexterm>
511 </listitem>
512 </varlistentry>
513
514 <varlistentry id="gnatname">
515 <term><command>gnatname</command></term>
516 <listitem>
517 <para>
518 will list the files associated with a
519 <application>GNAT</application> project.
520 </para>
521 <indexterm zone="gcc-ada gnatname">
522 <primary sortas="b-gnatname">gnatname</primary>
523 </indexterm>
524 </listitem>
525 </varlistentry>
526
527 <varlistentry id="gnatprep">
528 <term><command>gnatprep</command></term>
529 <listitem>
530 <para>
531 is the <application>GNAT</application> external preprocessor.
532 </para>
533 <indexterm zone="gcc-ada gnatprep">
534 <primary sortas="b-gnatprep">gnatprep</primary>
535 </indexterm>
536 </listitem>
537 </varlistentry>
538
539 <varlistentry id="gnatxref">
540 <term><command>gnatxref</command></term>
541 <listitem>
542 <para>
543 is similar to <command>gnatfind</command>, but generates
544 a full report of all cross-references.
545 </para>
546 <indexterm zone="gcc-ada gnatxref">
547 <primary sortas="b-gnatxref">gnatxref</primary>
548 </indexterm>
549 </listitem>
550 </varlistentry>
551
552 </variablelist>
553
554 </sect2>
555
556</sect1>
Note: See TracBrowser for help on using the repository browser.