Commit 45fdd405 by Per Bothner Committed by Per Bothner

* gcj.texi (Linking): New node. Document -lgij usage.

From-SVN: r84252
parent fedf5454
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
* gcj.texi (Invoking gij): Document new -verbose:class flag. * 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> 2004-07-07 Nathan Sidwell <nathan@codesourcery.com>
* java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros. * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
......
...@@ -161,6 +161,7 @@ options specific to @command{gcj}. ...@@ -161,6 +161,7 @@ options specific to @command{gcj}.
* Input Options:: How gcj finds files * Input Options:: How gcj finds files
* Encodings:: Options controlling source file encoding * Encodings:: Options controlling source file encoding
* Warnings:: Options controlling warnings specific to gcj * Warnings:: Options controlling warnings specific to gcj
* Linking:: Options for making an executable
* Code Generation:: Options controlling the output of gcj * Code Generation:: Options controlling the output of gcj
* Configure-time Options:: Options you won't use * Configure-time Options:: Options you won't use
@end menu @end menu
...@@ -353,21 +354,45 @@ This is the same as @code{-Wredundant-modifiers -Wextraneous-semicolon ...@@ -353,21 +354,45 @@ This is the same as @code{-Wredundant-modifiers -Wextraneous-semicolon
@end table @end table
@node Code Generation @node Linking
@section Code Generation @section Linking
In addition to the many @command{gcc} options controlling code generation, To turn a Java application into an executable program,
@command{gcj} has several options specific to itself. 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 @table @gcctabopt
@item --main=@var{CLASSNAME} @item --main=@var{CLASSNAME}
This option is used when linking to specify the name of the class whose 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 @code{main} method should be invoked when the resulting executable is
run. @footnote{The linker by default looks for a global function named run.
@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.}
@item -D@var{name}[=@var{value}] @item -D@var{name}[=@var{value}]
This option can only be used with @code{--main}. It defines a system 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 ...@@ -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 are initialized at the program's startup and can be retrieved at runtime
using the @code{java.lang.System.getProperty} method. 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 @item -C
This option is used to tell @command{gcj} to generate bytecode This option is used to tell @command{gcj} to generate bytecode
(@file{.class} files) rather than object code. (@file{.class} files) rather than object code.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment