source: general/prog/gcc-java.xml@ 5fd1f25b

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 5fd1f25b was 5fd1f25b, checked in by Pierre Labastie <pieere@…>, 9 years ago

Change the patch name in GCC instructions

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

  • Property mode set to 100644
File size: 21.2 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-java-download-http "https://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
8 <!ENTITY gcc-java-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">
9 <!ENTITY gcc-java-md5sum "d5525b1127d07d215960e6051c5da35e">
10 <!ENTITY gcc-java-size "91 MB">
11 <!ENTITY gcc-java-buildsize "4.1 GB">
12 <!ENTITY gcc-java-time "78 SBU (including 65 SBU for tests)">
13
14 <!ENTITY ecj-download-ftp "ftp://sourceware.org/pub/java/ecj-latest.jar">
15
16 <!ENTITY antlr-version "4.5">
17 <!ENTITY antlr-download-http "http://www.antlr.org/download/antlr-&antlr-version;-complete.jar">
18]>
19
20<sect1 id="gcc-java" xreflabel="GCC-Java-&gcc-version;">
21 <?dbhtml filename="gcc-java.html" ?>
22
23 <sect1info>
24 <othername>$LastChangedBy$</othername>
25 <date>$Date$</date>
26 </sect1info>
27
28 <title>GCC-Java-&gcc-version;</title>
29
30 <indexterm zone="gcc">
31 <primary sortas="a-gcc-java-5-0">GCC-Java-&gcc-version;</primary>
32 </indexterm>
33
34 <sect2 role="package">
35 <title>Introduction to GCC-Java</title>
36
37 <para>
38 See the introduction to the Java language and system at
39 <xref linkend="java"/>. The GNU Compiler Collection (GCC) contains
40 a Java compiler to native code. Together with the
41 <application>ecj</application> Java compiler from Eclipse (to bytecode),
42 it provides a way to build an acceptable JVM from source. However, since
43 the release of <application>OpenJDK</application>, the development
44 of GCC-Java has almost stopped, and the built JVM is an old version,
45 which cannot be used for building <xref linkend="openjdk"/>.
46 </para>
47
48 &lfs77_checked;
49
50 <caution>
51 <para>
52 Using the instructions on this page will have the effect that
53 the C and C++ compiler and libraries will be reinstalled, overwriting
54 the ones on your system. This may lead to some issues. Please read the
55 note and caution on the <xref linkend="gcc"/> page.
56 </para>
57 </caution>
58
59 <bridgehead renderas="sect3">Package Information</bridgehead>
60 <itemizedlist spacing="compact">
61 <listitem>
62 <para>
63 Download (HTTP): <ulink url="&gcc-java-download-http;"/>
64 </para>
65 </listitem>
66 <listitem>
67 <para>
68 Download (FTP): <ulink url="&gcc-java-download-ftp;"/>
69 </para>
70 </listitem>
71 <listitem>
72 <para>
73 Download MD5 sum: &gcc-java-md5sum;
74 </para>
75 </listitem>
76 <listitem>
77 <para>
78 Download size: &gcc-java-size;
79 </para>
80 </listitem>
81 <listitem>
82 <para>
83 Estimated disk space required: &gcc-java-buildsize;
84 </para>
85 </listitem>
86 <listitem>
87 <para>
88 Estimated build time: &gcc-java-time;
89 </para>
90 </listitem>
91 </itemizedlist>
92
93 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
94 <itemizedlist spacing="compact">
95 <listitem>
96 <para>
97 Eclipse Java compiler: <ulink url="&ecj-download-ftp;"/>
98 </para>
99 </listitem>
100 <listitem>
101 <para>
102 ANTLR binary, for building <command>gjdoc</command> (optional):
103 <ulink url="&antlr-download-http;"/>
104 </para>
105 </listitem>
106 <listitem>
107 <para>
108 Required patch:
109 <ulink url="&patch-root;/gcc-&gcc-version;-upstream_fixes-1.patch"/>
110 </para>
111 </listitem>
112 </itemizedlist>
113
114 <bridgehead renderas="sect3">GCC Java Dependencies</bridgehead>
115
116 <bridgehead renderas="sect4">Required</bridgehead>
117 <para role="required">
118 <xref linkend="unzip"/>,
119 <xref linkend="which"/>, and
120 <xref linkend="zip"/>
121 </para>
122
123 <bridgehead renderas="sect4">Recommended</bridgehead>
124 <para role="recommended">
125 <xref linkend="dejagnu"/>, for tests
126 </para>
127
128 <bridgehead renderas="sect4">Optional</bridgehead>
129 <para role="optional">
130 <xref linkend="gtk2"/> and
131 <ulink url="https://download.gnome.org/sources/libart_lgpl/">
132 Libart
133 </ulink> for building the AWT peer
134 </para>
135
136 <para condition="html" role="usernotes">User Notes:
137 <ulink url="&blfs-wiki;/gcc-java"/></para>
138
139 </sect2>
140
141 <sect2 role="installation">
142 <title>Installation of GCC Java</title>
143
144 <para>
145 The instructions below assume that the C and C++ compilers have
146 the same version as the one you are installing, so that a
147 <quote>bootstrap</quote> is not necessary. If you are upgrading
148 the GCC version, then remove the <option>--disable-bootstrap</option> from
149 the <command>./configure</command> options below.
150 </para>
151
152 <para>
153 As in LFS, fix some problems identified upstream:
154 </para>
155
156<screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-upstream_fixes-1.patch</userinput></screen>
157
158 <para>
159 Install <application>GCC Java</application> by running the
160 following commands:
161 </para>
162
163<screen><userinput>sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in &amp;&amp;
164sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in &amp;&amp;
165
166cp ../ecj-latest.jar ./ecj.jar &amp;&amp;
167
168mkdir ../gcc-build &amp;&amp;
169cd ../gcc-build &amp;&amp;
170
171../gcc-&gcc-version;/configure \
172 --prefix=/usr \
173 --disable-multilib \
174 --with-system-zlib \
175 --disable-bootstrap \
176 --enable-java-home \
177 --with-jvm-root-dir=/opt/gcj \
178 --with-antlr-jar=$(pwd)/../antlr-&antlr-version;-complete.jar \
179 --enable-languages=java &amp;&amp;
180make</userinput></screen>
181
182 <para>
183 If you have installed additional packages such as
184 <application>Valgrind</application> and <application>GDB</application>,
185 the <application>GCC</application> part of the testsuite will run more
186 tests than in LFS. Some of those will report FAIL and others XPASS
187 (pass when expected to FAIL). To run the tests, issue:
188 </para>
189
190<screen><userinput>ulimit -s 32768 &amp;&amp;
191make -k check</userinput></screen>
192<!-- The command above may error out, so using && may prevent the summary
193to be run. -->
194
195 <para>
196 The tests are very long, and the results may be hard to find in the
197 logs, specially if you use job control with make. You can get a summary
198 of the tests with:
199 </para>
200
201<screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen>
202
203 <para>
204 Now, as the <systemitem class="username">root</systemitem> user:
205 </para>
206
207<screen role="root"><userinput>make install &amp;&amp;
208
209mkdir -pv /usr/share/gdb/auto-load/usr/lib &amp;&amp;
210mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &amp;&amp;
211
212chown -v -R root:root \
213 /usr/lib/gcc/*linux-gnu/&gcc-version;/include{,-fixed} &amp;&amp;
214
215gcj -o ecj ../ecj-latest.jar \
216 --main=org.eclipse.jdt.internal.compiler.batch.Main &amp;&amp;
217mv ecj /usr/bin &amp;&amp;
218ln -sfv ../../../usr/bin/ecj /opt/gcj/bin/javac</userinput></screen>
219
220 </sect2>
221
222 <sect2 role="commands">
223 <title>Command Explanations</title>
224
225 <para>
226 The two <command>sed</command> commands prevent the
227 installation of the <application>libffi</application> library bundled
228 with <application>GCC</application>, since it is outdated compared to
229 <xref linkend="libffi"/>.
230 </para>
231
232 <para>
233 <command>mkdir ../gcc-build; cd ../gcc-build</command>: The
234 <application>GCC</application> documentation recommends
235 building the package in a dedicated build directory.
236 </para>
237
238 <para>
239 <parameter>--disable-multilib</parameter>: This parameter ensures
240 that files are created for the specific architecture of your computer.
241 </para>
242
243 <para>
244 <parameter>--with-system-zlib</parameter>: Uses the system
245 <application>zlib</application> instead of the bundled one.
246 </para>
247
248 <para>
249 <parameter>--disable-bootstrap</parameter>: Prevents the C and C++
250 compilers to recompile themselves. You should use this switch only
251 if the installed C and C++ compilers are the same version as the
252 ones you install.
253 </para>
254
255 <para>
256 <parameter>--enable-java-home</parameter>: Creates a directory
257 layout similar to that of a JVM.
258 </para>
259
260 <para>
261 <parameter>--with-jvm-root-dir=/opt/gcj</parameter>: Installs
262 the JVM in the specified location.
263 </para>
264
265 <para>
266 <parameter>--with-antlr-jar=...</parameter>: Specifies the location of
267 <application>ANTLR</application>, which is needed to build
268 <command>gjdoc</command>. Remove if you have not downloaded antlr.
269 </para>
270
271 <para>
272 <parameter>--enable-languages=java</parameter>:
273 This command identifies which language to build. Note it is unavoidable
274 that the <application>C</application> and <application>C++</application>
275 compilers be built too.
276 </para>
277
278 <para>
279 <option>--enable-java-awt=gtk</option>: Allows to build the Java AWT
280 <application>GTK+2</application> peer. Needed to have a fully functional
281 JVM.
282 </para>
283
284 <para>
285 <command>ulimit -s 32768</command>: This command prevents several
286 tests from running out of stack space.
287 </para>
288
289 <para>
290 <command>make -k check</command>: This command runs the test suite
291 without stopping if any errors are encountered.
292 </para>
293
294 <para>
295 <command>../gcc-&gcc-version;/contrib/test_summary</command>: This
296 command will produce a summary of the test suite results. You can append
297 <command>| grep -A7 Summ</command> to the command to produce an even more
298 condensed version of the summary. You may also wish to redirect the output
299 to a file for review and comparison later on.
300 </para>
301
302 <para>
303 <command>chown -v -R root:root
304 /usr/lib/gcc/*linux-gnu/...</command>:
305 If the package is built by a user other than root, the ownership of the
306 installed <filename class="directory">include</filename> directory (and its
307 content) will be incorrect. This commands changes the ownership to the
308 <systemitem class="username">root</systemitem> user and group.
309 </para>
310
311 <para>
312 <command>gcj -o ecj ...</command>: compiles the eclipse compiler to
313 native code, which is much faster than bytecode. This compiler is
314 then used as a <command>javac</command> replacement in the JVM.
315 </para>
316
317 </sect2>
318
319 <sect2 role="configuration">
320 <title>Configuring GCC-Java</title>
321
322 <sect3>
323 <title>Configuration Information</title>
324
325 <para>
326 The configuration is the same as <xref linkend="ojdk-conf"/>,
327 replacing <filename class="directory">/opt/jdk</filename> with
328 <filename class="directory">/opt/gcj</filename>.
329 </para>
330
331 </sect3>
332
333 </sect2>
334
335 <sect2 role="content">
336 <title>Contents</title>
337
338 <segmentedlist>
339 <segtitle>Installed Programs</segtitle>
340 <segtitle>Installed Libraries</segtitle>
341 <segtitle>Installed Directories</segtitle>
342
343 <seglistitem>
344 <seg>
345 aot-compile, ecj, gappletviewer, gc-analyze, gcj, gcj-dbtool,
346 gcjh, gij, gjar, gjarsigner, gjavah, gjdoc, gkeytool, gnative2ascii,
347 gorbd, grmic, grmid, grmiregistry, gserialver, gtnameserv, jcf-dump,
348 jv-convert, rebuild-gcj-db. Symbolic links to these files are located
349 in <filename class="directory">/opt/gcj/bin</filename>
350 </seg>
351 <seg>
352 libgcj_bc.so, libgcj.so, libgcj-tools.so
353 libgij.so, and numerous other
354 run-time libraries and executables in
355 <filename class="directory">/usr/lib/gcc</filename> and
356 <filename class="directory">/usr/libexec/gcc</filename>
357 </seg>
358 <seg>
359 /usr/include/c++/&gcc-version;/{gcj,gnu,java,javax,org,sun},
360 /usr/lib/gcj-&gcc-version;-16, /usr/lib/jvm-exports,
361 /usr/lib/security, /opt/gcj and /usr/share/java
362 </seg>
363 </seglistitem>
364 </segmentedlist>
365
366 <para>
367 Some program and library names and descriptions are not listed here,
368 but can be found at
369 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were
370 initially installed during the building of LFS.
371 </para>
372
373 <variablelist>
374 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
375 <?dbfo list-presentation="list"?>
376 <?dbhtml list-presentation="table"?>
377
378 <varlistentry id="aot-compile">
379 <term><command>aot-compile</command></term>
380 <listitem>
381 <para>
382 searches a directory for Java bytecode and uses
383 <command>gcj</command> to compile it to native code.
384 </para>
385 <indexterm zone="gcc aot-compile">
386 <primary sortas="b-aot-compile">aot-compile</primary>
387 </indexterm>
388 </listitem>
389 </varlistentry>
390
391 <varlistentry id="ecj">
392 <term><command>ecj</command></term>
393 <listitem>
394 <para>
395 is the eclipse compiler.
396 </para>
397 <indexterm zone="gcc ecj">
398 <primary sortas="b-ecj">ecj</primary>
399 </indexterm>
400 </listitem>
401 </varlistentry>
402
403 <varlistentry id="gappletviewer">
404 <term><command>gappletviewer</command></term>
405 <listitem>
406 <para>
407 loads and run a <application>Java</application> applet.
408 </para>
409 <indexterm zone="gcc gappletviewer">
410 <primary sortas="b-gappletviewer">gappletviewer</primary>
411 </indexterm>
412 </listitem>
413 </varlistentry>
414
415 <varlistentry id="gc-analyze">
416 <term><command>gc-analyze</command></term>
417 <listitem>
418 <para>
419 analyzes garbage collector (GC) memory dumps from
420 <application>Java</application> code.
421 </para>
422 <indexterm zone="gcc gc-analyze">
423 <primary sortas="b-gc-analyze">gc-analyze</primary>
424 </indexterm>
425 </listitem>
426 </varlistentry>
427
428 <varlistentry id="gcj">
429 <term><command>gcj</command></term>
430 <listitem>
431 <para>
432 is an ahead-of-time compiler for the <application>Java</application>
433 language.
434 </para>
435 <indexterm zone="gcc gcj">
436 <primary sortas="b-gcj">gcj</primary>
437 </indexterm>
438 </listitem>
439 </varlistentry>
440
441 <varlistentry id="gcj-dbtool">
442 <term><command>gcj-dbtool</command></term>
443 <listitem>
444 <para>
445 is a tool for creating and manipulating class file mapping databases.
446 </para>
447 <indexterm zone="gcc gcj-dbtool">
448 <primary sortas="b-gcj-dbtool">gcj-dbtool</primary>
449 </indexterm>
450 </listitem>
451 </varlistentry>
452
453 <varlistentry id="gcjh">
454 <term><command>gcjh</command></term>
455 <listitem>
456 <para>
457 generates header files from <application>Java</application> class files.
458 </para>
459 <indexterm zone="gcc gcjh">
460 <primary sortas="b-gcjh">gcjh</primary>
461 </indexterm>
462 </listitem>
463 </varlistentry>
464
465 <varlistentry id="gij">
466 <term><command>gij</command></term>
467 <listitem>
468 <para>
469 is the GNU interpreter for <application>Java</application> bytecode.
470 </para>
471 <indexterm zone="gcc gij">
472 <primary sortas="b-gij">gij</primary>
473 </indexterm>
474 </listitem>
475 </varlistentry>
476
477 <varlistentry id="gjar">
478 <term><command>gjar</command></term>
479 <listitem>
480 <para>
481 is an (partial) implementation of the <command>jar</command>
482 utility that comes with Sun's JDK.
483 </para>
484 <indexterm zone="gcc gjar">
485 <primary sortas="b-gjar">gjar</primary>
486 </indexterm>
487 </listitem>
488 </varlistentry>
489
490 <varlistentry id="gjarsigner">
491 <term><command>gjarsigner</command></term>
492 <listitem>
493 <para>
494 is a Java ARchive (JAR) file signing and verification tool.
495 </para>
496 <indexterm zone="gcc gjarsigner">
497 <primary sortas="b-gjarsigner">gjarsigner</primary>
498 </indexterm>
499 </listitem>
500 </varlistentry>
501
502 <varlistentry id="gjavah">
503 <term><command>gjavah</command></term>
504 <listitem>
505 <para>
506 generates header files from Java class files.
507 </para>
508 <indexterm zone="gcc gjavah">
509 <primary sortas="b-gjavah">gjavah</primary>
510 </indexterm>
511 </listitem>
512 </varlistentry>
513
514 <varlistentry id="gjdoc">
515 <term><command>gjdoc</command></term>
516 <listitem>
517 <para>
518 is a documentation tool similar to <command>javadoc</command>.
519 </para>
520 <indexterm zone="gcc gjdoc">
521 <primary sortas="b-gjdoc">gjdoc</primary>
522 </indexterm>
523 </listitem>
524 </varlistentry>
525
526 <varlistentry id="gkeytool">
527 <term><command>gkeytool</command></term>
528 <listitem>
529 <para>
530 manages private keys and public certificates in a
531 <application>Java</application> environment.
532 </para>
533 <indexterm zone="gcc gkeytool">
534 <primary sortas="b-gkeytool">gkeytool</primary>
535 </indexterm>
536 </listitem>
537 </varlistentry>
538
539 <varlistentry id="gnative2ascii">
540 <term><command>gnative2ascii</command></term>
541 <listitem>
542 <para>
543 is an encoding converter for <application>Java</application>.
544 </para>
545 <indexterm zone="gcc gnative2ascii">
546 <primary sortas="b-gnative2ascii">gnative2ascii</primary>
547 </indexterm>
548 </listitem>
549 </varlistentry>
550
551 <varlistentry id="gorbd">
552 <term><command>gorbd</command></term>
553 <listitem>
554 <para>
555 is an object request broker daemon.
556 </para>
557 <indexterm zone="gcc gorbd">
558 <primary sortas="b-gorbd">gorbd</primary>
559 </indexterm>
560 </listitem>
561 </varlistentry>
562
563 <varlistentry id="grmic-gcc">
564 <term><command>grmic</command></term>
565 <listitem>
566 <para>
567 generates stubs for Remote Method Invocation.
568 </para>
569 <indexterm zone="gcc grmic-gcc">
570 <primary sortas="b-grmic">grmic</primary>
571 </indexterm>
572 </listitem>
573 </varlistentry>
574
575 <varlistentry id="grmid-gcc">
576 <term><command>grmid</command></term>
577 <listitem>
578 <para>
579 RMI activation system daemon.
580 </para>
581 <indexterm zone="gcc grmid-gcc">
582 <primary sortas="b-grmid">grmid</primary>
583 </indexterm>
584 </listitem>
585 </varlistentry>
586
587 <varlistentry id="grmiregistry-gcc">
588 <term><command>grmiregistry</command></term>
589 <listitem>
590 <para>
591 starts a remote object registry on the current host.
592 </para>
593 <indexterm zone="gcc grmiregistry-gcc">
594 <primary sortas="b-grmiregistry">grmiregistry</primary>
595 </indexterm>
596 </listitem>
597 </varlistentry>
598
599 <varlistentry id="gserialver">
600 <term><command>gserialver</command></term>
601 <listitem>
602 <para>
603 prints the serialVersionUID of the specified class.
604 </para>
605 <indexterm zone="gcc gserialver">
606 <primary sortas="b-gserialver">gserialver</primary>
607 </indexterm>
608 </listitem>
609 </varlistentry>
610
611 <varlistentry id="gtnameserv">
612 <term><command>gtnameserv</command></term>
613 <listitem>
614 <para>
615 starts a naming service.
616 </para>
617 <indexterm zone="gcc gtnameserv">
618 <primary sortas="b-gtnameserv">gtnameserv</primary>
619 </indexterm>
620 </listitem>
621 </varlistentry>
622
623 <varlistentry id="jcf-dump">
624 <term><command>jcf-dump</command></term>
625 <listitem>
626 <para>
627 prints information about <application>Java</application>
628 class files.
629 </para>
630 <indexterm zone="gcc jcf-dump">
631 <primary sortas="b-jcf-dump">jcf-dump</primary>
632 </indexterm>
633 </listitem>
634 </varlistentry>
635
636 <varlistentry id="jv-convert">
637 <term><command>jv-convert</command></term>
638 <listitem>
639 <para>
640 converts files from one encoding to another.
641 </para>
642 <indexterm zone="gcc jv-convert">
643 <primary sortas="b-jv-convert">jv-convert</primary>
644 </indexterm>
645 </listitem>
646 </varlistentry>
647
648 <varlistentry id="rebuild-gcj-db">
649 <term><command>rebuild-gcj-db</command></term>
650 <listitem>
651 <para>
652 Merge the per-solib databases made by
653 <application>aot-compile</application> into one system-wide
654 database.
655 </para>
656 <indexterm zone="gcc rebuild-gcj-db">
657 <primary sortas="b-rebuild-gcj-db">rebuild-gcj-db</primary>
658 </indexterm>
659 </listitem>
660 </varlistentry>
661
662 </variablelist>
663
664 </sect2>
665
666</sect1>
Note: See TracBrowser for help on using the repository browser.