]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* gcj.texi (Linking): New node. Document -lgij usage.
authorPer Bothner <per@bothner.com>
Thu, 8 Jul 2004 01:04:13 +0000 (18:04 -0700)
committerPer Bothner <bothner@gcc.gnu.org>
Thu, 8 Jul 2004 01:04:13 +0000 (18:04 -0700)
From-SVN: r84252

gcc/java/ChangeLog
gcc/java/gcj.texi

index 88c1b1582214654ce12dd6d5b2878722ad2fea6a..01c337cf8d028236bb8f9d766c9380828af6af91 100644 (file)
@@ -2,6 +2,8 @@
 
        * gcj.texi (Invoking gij):  Document new -verbose:class flag.
 
+       * gcj.texi (Linking):   New node.  Document -lgij usage.
+
 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
 
        * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
index 4eec1a492a67d922e8722c0ab5fb281ee99e9faf..6c831765c0856244987baed426194befbc8523ce 100644 (file)
@@ -161,6 +161,7 @@ options specific to @command{gcj}.
 * Input Options::              How gcj finds files
 * Encodings::                   Options controlling source file encoding
 * Warnings::                   Options controlling warnings specific to gcj
+* Linking::                    Options for making an executable
 * Code Generation::            Options controlling the output of gcj
 * Configure-time Options::     Options you won't use
 @end menu
@@ -353,21 +354,45 @@ This is the same as @code{-Wredundant-modifiers -Wextraneous-semicolon
 @end table
 
 
-@node Code Generation
-@section Code Generation
+@node Linking
+@section Linking
 
-In addition to the many @command{gcc} options controlling code generation,
-@command{gcj} has several options specific to itself.
+To turn a Java application into an executable program,
+you need to link it with the needed libraries, just as for C or C++.
+The linker by default looks for a global function named @code{main}.
+Since Java does not have global functions, and a
+collection of Java classes may have more than one class with a
+@code{main} method, you need to let the linker know which of those
+@code{main} methods it should invoke when starting the application.
+You can do that in any of these ways:
+
+@itemize @bullet
+@item
+Specify the class containing the desired @code{main} method
+when you link the application, using the @code{--main} flag,
+described below.
+@item
+Link the Java package(s) into a shared library (dll) rather than an
+executable.  Then invoke the application using the @code{gij} program,
+making sure that @code{gij} can find the libraries it needs.
+@item
+Link the Java packages(s) with the flag @code{-lgij}, which links
+in the @code{main} routine from the @code{gij} command.
+This allows you to select the class whose @code{main} method you
+want to run when you run the application.  You can also use
+other @code{gij} flags, such as @code{-D} flags to set properties.
+Using the @code{-lgij} library (rather than the @code{gij} program
+of the previous mechanism) has some advantages: it is compatible with
+static linking, and does not require configuring or installing libraries.
+@end itemize
+
+These @code{gij} options relate to linking an execitable:
 
 @table @gcctabopt
 @item --main=@var{CLASSNAME}
 This option is used when linking to specify the name of the class whose
 @code{main} method should be invoked when the resulting executable is
-run.  @footnote{The linker by default looks for a global function named
-@code{main}.  Since Java does not have global functions, and a
-collection of Java classes may have more than one class with a
-@code{main} method, you need to let the linker know which of those
-@code{main} methods it should invoke when starting the application.}
+run.
 
 @item -D@var{name}[=@var{value}]
 This option can only be used with @code{--main}.  It defines a system
@@ -376,6 +401,21 @@ specified then it defaults to the empty string.  These system properties
 are initialized at the program's startup and can be retrieved at runtime
 using the @code{java.lang.System.getProperty} method.
 
+@item -lgij
+Create an application whose command-line processing is that
+of the @code{gij} command.
+
+This option is an alternative to using @code{--main}; you cannot use both.
+@end table
+
+@node Code Generation
+@section Code Generation
+
+In addition to the many @command{gcc} options controlling code generation,
+@command{gcj} has several options specific to itself.
+
+@table @gcctabopt
+
 @item -C
 This option is used to tell @command{gcj} to generate bytecode
 (@file{.class} files) rather than object code.