[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
As gcj
is just another front end to gcc
, it supports many
of the same options as gcc. See section `Option Summary' in Using the GNU Compiler Collection. This manual only documents the
options specific to gcj
.
1.1 Input and output files 1.2 Input Options How gcj finds files 1.3 Encodings Options controlling source file encoding 1.4 Warnings Options controlling warnings specific to gcj 1.5 Code Generation Options controlling the output of gcj 1.6 Configure-time Options Options you won't use
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A gcj
command is like a gcc
command, in that it
consists of a number of options and file names. The following kinds
of input file names are supported:
file.java
file.class
file.zip
file.jar
.class
files, all of
which are compiled. The archive may be compressed.
@file
.java
source files, but that
may change.)
Each named file is compiled, just as if it had been on the command line.
library.a
library.so
-llibname
gcc
manual.
You can specify more than one input file on the gcj
command line,
in which case they will all be compiled. If you specify a
-o FILENAME
option, all the input files will be compiled together, producing a
single output file, named FILENAME.
This is allowed even when using -S
or -c
,
but not when using -C
.
(This is an extension beyond the what plain gcc
allows.)
(If more than one input file is specified, all must currently
be .java
files, though we hope to fix this.)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gcj
has options to control where it looks to find files it needs.
For instance, gcj
might need to load a class that is referenced
by the file it has been asked to compile. Like other compilers for the
Java language, gcj
has a notion of a class path. There are
several options and environment variables which can be used to
manipulate the class path. When gcj
looks for a given class, it
searches the class path looking for matching `.class' or
`.java' file. gcj
comes with a built-in class path which
points at the installed `libgcj.jar', a file which contains all the
standard classes.
In the below, a directory or path component can refer either to an
actual directory on the filesystem, or to a `.zip' or `.jar'
file, which gcj
will search as if it is a directory.
-Idir
-I
are kept in order and prepended
to the class path constructed from all the other options. Unless
compatibility with tools like javac
is imported, we recommend
always using -I
instead of the other options for manipulating the
class path.
--classpath=path
--CLASSPATH=path
--classpath
option in that it also suppresses
the built-in system path.
CLASSPATH
The final class path is constructed like so:
-I
.
--classpath
is specified, its value is appended and processing
stops. That is, --classpath
suppresses all the options mentioned
later in this list.
--CLASSPATH
is specified, its value is appended and the
CLASSPATH
environment variable is suppressed.
CLASSPATH
environment variable is specified (and was not
suppressed by --CLASSPATH
), then its value is appended.
The classfile built by gcj
for the class java.lang.Object
(and placed in libgcj.jar
) contains a special zero length
attribute gnu.gcj.gcj-compiled
. The compiler looks for this
attribute when loading java.lang.Object
and will report an error
if it isn't found, unless it compiles to bytecode (the option
-fforce-classes-archive-check
can be used to overide this
behavior in this particular case.)
-fforce-classes-archive-check
gnu.gcj.gcj-compiled
in java.lang.Object
and
issue an error if it isn't found.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Java programming language uses Unicode throughout. In an effort to
integrate well with other locales, gcj
allows `.java' files
to be written using almost any encoding. gcj
knows how to
convert these encodings into its internal encoding at compile time.
You can use the --encoding=NAME
option to specify an
encoding (of a particular character set) to use for source files. If
this is not specified, the default encoding comes from your current
locale. If your host system has insufficient locale support, then
gcj
assumes the default encoding to be the `UTF-8' encoding
of Unicode.
To implement --encoding
, gcj
simply uses the host
platform's iconv
conversion routine. This means that in practice
gcj
is limited by the capabilities of the host platform.
The names allowed for the argument --encoding
vary from platform
to platform (since they are not standardized anywhere). However,
gcj
implements the encoding named `UTF-8' internally, so if
you choose to use this for your source files you can be assured that it
will work on every host.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gcj
implements several warnings. As with other generic
gcc
warnings, if an option of the form -Wfoo
enables a
warning, then -Wno-foo
will disable it. Here we've chosen to
document the form of the warning which will have an effect -- the
default being the opposite of what is listed.
-Wredundant-modifiers
gcj
will warn about redundant modifiers. For
instance, it will warn if an interface method is declared public
.
-Wextraneous-semicolon
gcj
to warn about empty statements. Empty statements
have been deprecated.
-Wno-out-of-date
gcj
not to warn when a source file is
newer than its matching class file. By default gcj
will warn
about this.
-Wunused
gcc
's -Wunused
.
-Wall
-Wredundant-modifiers -Wextraneous-semicolon
-Wunused
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In addition to the many gcc
options controlling code generation,
gcj
has several options specific to itself.
--main=CLASSNAME
main
method should be invoked when the resulting executable is
run. (1)
-Dname[=value]
--main
. It defines a system
property named name with value value. If value is not
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 java.lang.System.getProperty
method.
-C
gcj
to generate bytecode
(`.class' files) rather than object code.
-d directory
-C
, this causes all generated `.class' files
to be put in the appropriate subdirectory of directory. By
default they will be put in subdirectories of the current working
directory.
-fno-bounds-check
gcj
generates code which checks the bounds of all
array indexing operations. With this option, these checks are omitted.
Note that this can result in unpredictable behavior if the code in
question actually does violate array bounds constraints.
-fjni
gcj
there are two options for writing native methods: CNI
and JNI. By default gcj
assumes you are using CNI. If you are
compiling a class with native methods, and these methods are implemented
using JNI, then you must use -fjni
. This option causes
gcj
to generate stubs which will invoke the underlying JNI
methods.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Some gcj
code generations options affect the resulting ABI, and
so can only be meaningfully given when libgcj
, the runtime
package, is configured. libgcj
puts the appropriate options from
this group into a `spec' file which is read by gcj
. These
options are listed here for completeness; if you are using libgcj
then you won't want to touch these options.
-fuse-boehm-gc
gcj
to put an object marking descriptor into each
vtable.
-fhash-synchronization
synchronize
,
wait
, and notify
) is pointed to by a word in each object.
With this option gcj
assumes that this information is stored in a
hash table and not in the object itself.
-fuse-divide-subroutine
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |