EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

aarch64-linux-gnu-gcj – Online in der Cloud

Führen Sie aarch64-linux-gnu-gcj im kostenlosen OnWorks-Hosting-Anbieter über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl aarch64-linux-gnu-gcj, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


gcj - Ahead-of-time-Compiler für die Java-Sprache

ZUSAMMENFASSUNG


gcj [-Idir...] [-d dir...]
[--KLASSPATH=Weg] [--klassenpfad=Weg]
[-fzu erhalten...] [--Codierung=Name]
[--hauptsächlich=Klassenname] [-DName[=Wert]...]
[-C] [--Ressource Ressourcenname] [-d Verzeichnis]
[-Wwarnen...]
Quelldatei...

BESCHREIBUNG


As gcj ist nur ein weiteres Front-End zu gcc, unterstützt es viele der gleichen Optionen wie gcc.
Dieses Handbuch dokumentiert nur die spezifischen Optionen für gcj.

OPTIONAL


zufuhr und Ausgabe Dateien
A gcj Befehl ist wie a gcc Befehl, indem er aus einer Reihe von Optionen und Dateien besteht
Namen. Die folgenden Arten von Eingabedateinamen werden unterstützt:

Datei.Java
Java-Quelldateien.

Datei.Klasse
Java-Bytecode-Dateien.

Datei.zip
Datei. Jar
Ein Archiv, das eine oder mehrere ".class"-Dateien enthält, die alle kompiliert sind. Die
Archiv kann komprimiert sein. Dateien in einem Archiv, die nicht auf enden .Klasse sind
als Ressourcendateien behandelt; sie werden in die resultierende Objektdatei kompiliert als Ader:
URLs.

@Datei
Eine Datei, die eine durch Leerzeichen getrennte Liste von Eingabedateinamen enthält. (Derzeit sind diese
müssen alle ".java"-Quelldateien sein, aber das kann sich ändern.) Jede benannte Datei wird kompiliert,
als wäre es auf der Kommandozeile gewesen.

Bibliothek.a
Bibliothek.so
-lBibliotheksname
Bibliotheken, die beim Verknüpfen verwendet werden sollen. Siehe die gcc Handbuch.

Sie können mehr als eine Eingabedatei auf dem gcj Befehlszeile, in diesem Fall werden sie
alle zusammengestellt werden. Wenn Sie ein "-o ." angeben DATEINAME" Option werden alle Eingabedateien
zusammen kompiliert, wodurch eine einzelne Ausgabedatei namens . entsteht DATEINAME. Das ist sogar erlaubt
bei Verwendung von "-S" oder "-c", aber nicht bei Verwendung von "-C" oder "--resource". (Dies ist eine Erweiterung
jenseits der was Ebene gcc erlaubt.) (Wenn mehr als eine Eingabedatei angegeben ist, müssen alle
derzeit ".java" -Dateien sein, obwohl wir hoffen, dies zu beheben.)

zufuhr Optionen
gcj verfügt über Optionen, um zu steuern, wo nach den benötigten Dateien gesucht wird. Zum Beispiel, gcj könnte
müssen eine Klasse laden, die von der Datei referenziert wird, zu deren Kompilierung sie aufgefordert wurde. Mögen
andere Compiler für die Java-Sprache, gcj hat eine Vorstellung von a Klasse Weg. Es gibt
mehrere Optionen und Umgebungsvariablen, die verwendet werden können, um den Klassenpfad zu manipulieren.
Wann gcj sucht nach einer bestimmten Klasse, es durchsucht den Klassenpfad nach Übereinstimmungen .Klasse
or .Java Datei. gcj kommt mit einem eingebauten Klassenpfad, der auf das installierte zeigt
libgcj.jar, eine Datei, die alle Standardklassen enthält.

Im folgenden Text kann sich eine Verzeichnis- oder Pfadkomponente entweder auf ein tatsächliches Verzeichnis beziehen
auf dem Dateisystem, oder zu a .zip or . Jar Datei, die gcj wird suchen, als wäre es ein
Verzeichnis.

-Idir
Alle mit "-I" angegebenen Verzeichnisse werden in Ordnung gehalten und dem Klassenpfad vorangestellt
aus allen anderen Optionen aufgebaut. Sofern keine Kompatibilität mit Tools wie "javac"
ist wichtig, wir empfehlen immer "-I" anstelle der anderen Optionen für
den Klassenpfad manipulieren.

--classpath=Weg
Dies setzt den Klassenpfad auf Weg, eine durch Doppelpunkte getrennte Liste von Pfaden (auf Windows-basierten
Systeme, eine durch Semikolon getrennte Liste von Pfaden). Dies überschreibt nicht die eingebaute
("boot") Suchpfad.

--CLASSPATH=Weg
Veraltetes Synonym für "--classpath".

--bootclasspath=Weg
Wo finde ich die standardmäßigen eingebauten Klassen, z. B. "java.lang.String".

--extdirs=Weg
Für jedes Verzeichnis im Weg, platzieren Sie den Inhalt dieses Verzeichnisses am Ende des
Klassenweg.

KLASSENPFAD
Dies ist eine Umgebungsvariable, die eine Liste von Pfaden enthält.

Der endgültige Klassenpfad ist wie folgt aufgebaut:

* Zuerst kommen alle mit "-I" angegebenen Verzeichnisse.

* Ob --klassenpfad angegeben ist, wird sein Wert angehängt. Andernfalls, wenn "CLASSPATH"
Umgebungsvariable angegeben wird, wird ihr Wert angehängt. Ansonsten ist der Strom
Verzeichnis (".") wird angehängt.

* Wenn "--bootclasspath" angegeben wurde, fügen Sie seinen Wert hinzu. Andernfalls fügen Sie das integrierte
Systemverzeichnis, libgcj.jar.

* Schließlich, wenn "--extdirs" angegeben wurde, fügen Sie den Inhalt des angegebenen
Verzeichnisse am Ende des Klassenpfads. Andernfalls fügen Sie den Inhalt der
eingebaute extdirs unter "$(prefix)/share/java/ext".

Die von erstellte Klassendatei gcj für die Klasse "java.lang.Object" (und platziert in "libgcj.jar")
enthält ein spezielles Nulllängenattribut "gnu.gcj.gcj-compiled". Der Compiler sucht nach
dieses Attribut beim Laden von "java.lang.Object" und meldet einen Fehler, wenn es nicht gefunden wird,
es sei denn, es wird in Bytecode kompiliert (die Option "-fforce-classes-archive-check" kann verwendet werden, um
dieses Verhalten in diesem speziellen Fall überschreiben.)

-fforce-classes-archive-check
Dies zwingt den Compiler, immer nach dem speziellen Nulllängenattribut zu suchen
"gnu.gcj.gcj-compiled" in "java.lang.Object" und geben einen Fehler aus, wenn es nicht gefunden wird.

-fsource=VERSION
Diese Option wird verwendet, um die Quellversion auszuwählen, die von . akzeptiert wird gcj. Der Standardwert ist 1.5.

Codierungen
Die Programmiersprache Java verwendet durchgehend Unicode. In dem Bemühen, sich gut zu integrieren
mit anderen Orten, gcj erlaubt .Java Dateien mit fast jeder Codierung geschrieben werden. gcj
weiß, wie man diese Codierungen zur Kompilierzeit in ihre interne Codierung umwandelt.

Sie können das "--encoding=NAME" Option zum Angeben einer Codierung (eines bestimmten Zeichens)
set) für Quelldateien zu verwenden. Wenn dies nicht angegeben ist, stammt die Standardcodierung von
Ihr aktuelles Gebietsschema. Wenn Ihr Hostsystem über unzureichende Unterstützung für Gebietsschemas verfügt, dann gcj
geht davon aus, dass die Standardcodierung die ist UTF-8 Kodierung von Unicode.

Um "--encoding" zu implementieren, gcj verwendet einfach die "iconv"-Konvertierungsroutine der Host-Plattform.
Das bedeutet in der Praxis gcj wird durch die Fähigkeiten der Host-Plattform begrenzt.

Die für das Argument "--encoding" zulässigen Namen variieren von Plattform zu Plattform (da sie
sind nirgendwo genormt). Jedoch, gcj implementiert die Codierung namens UTF-8
intern. Wenn Sie sich also dafür entscheiden, dies für Ihre Quelldateien zu verwenden, können Sie sicher sein, dass es
funktioniert auf jedem Host.

Warnungen
gcj implementiert mehrere Warnungen. Wie bei anderen generischen gcc Warnungen, wenn eine Option der
form "-Wfoo" aktiviert eine Warnung, dann "-Wno-foo" deaktiviert sie. Hier haben wir uns dafür entschieden
Dokumentieren Sie die Form der Warnung, die eine Auswirkung haben wird - die Standardeinstellung ist die
Gegenteil von dem, was aufgeführt ist.

-Wredundant-Modifikatoren
Mit dieser Flagge gcj warnt vor redundanten Modifikatoren. Zum Beispiel wird es warnen
wenn eine Schnittstellenmethode als "public" deklariert ist.

-Wextraneous-Semikolon
Dies bewirkt gcj um vor leeren Aussagen zu warnen. Leere Aussagen wurden gemacht
veraltet.

-Wno-veraltet
Diese Option verursacht gcj nicht zu warnen, wenn eine Quelldatei neuer ist als ihre Übereinstimmung
Klasse Datei. Standardmäßig gcj werde davor warnen.

-Wno-veraltet
Warnen, wenn auf eine veraltete Klasse, Methode oder ein Feld verwiesen wird.

-Unbenutzt
Dies ist das gleiche wie gcc's "-Wunused".

-Wand
Dies ist dasselbe wie "-Wredundant-Modifiers -Wextraneous-Semikolon -Wunused".

Linking
Um eine Java-Anwendung in ein ausführbares Programm zu verwandeln, müssen Sie sie mit dem benötigten
Bibliotheken, genau wie für C oder C++. Der Linker sucht standardmäßig nach einer globalen Funktion namens
"hauptsächlich". Da Java keine globalen Funktionen hat und eine Sammlung von Java-Klassen möglicherweise
Wenn Sie mehr als eine Klasse mit einer "main"-Methode haben, müssen Sie dem Linker mitteilen, welche davon
die "main"-Methoden, die beim Starten der Anwendung aufgerufen werden sollen. Das kannst du in
eine dieser Möglichkeiten:

* Geben Sie die Klasse an, die die gewünschte "main"-Methode enthält, wenn Sie die Anwendung verknüpfen,
Verwenden Sie das Flag "--main", das unten beschrieben wird.

* Verknüpfen Sie das/die Java-Paket(e) in eine gemeinsam genutzte Bibliothek (dll) und nicht in eine ausführbare Datei. Dann
Rufen Sie die Anwendung mit dem Programm "gij" auf und stellen Sie sicher, dass "gij" die
Bibliotheken, die es braucht.

* Verknüpfen Sie die Java-Pakete mit dem Flag "-lgij", das in der "main"-Routine verlinkt
aus dem "gij"-Befehl. Auf diese Weise können Sie die Klasse auswählen, deren "main"-Methode Sie
ausführen möchten, wenn Sie die Anwendung ausführen. Sie können auch andere "gij" -Flags verwenden, wie z
"-D" Flags zum Festlegen von Eigenschaften. Verwenden der Bibliothek "-lgij" (statt der "gij"
Programm des vorherigen Mechanismus) hat einige Vorteile: es ist kompatibel mit statischen
Verknüpfung und erfordert keine Konfiguration oder Installation von Bibliotheken.

Diese "gij"-Optionen beziehen sich auf das Verknüpfen einer ausführbaren Datei:

--main=KLASSENNAME
Diese Option wird beim Verknüpfen verwendet, um den Namen der Klasse anzugeben, deren "main"-Methode
sollte aufgerufen werden, wenn die resultierende ausführbare Datei ausgeführt wird.

-DName[=Wert]
Diese Option kann nur mit "--main" verwendet werden. Es definiert eine Systemeigenschaft namens Name
mit Wert Wert. Wenn Wert nicht angegeben ist, wird standardmäßig die leere Zeichenfolge verwendet.
Diese Systemeigenschaften werden beim Programmstart initialisiert und können abgerufen werden
zur Laufzeit mit der Methode "java.lang.System.getProperty".

-lgij
Erstellen Sie eine Anwendung, deren Befehlszeilenverarbeitung die des Befehls "gij" ist.

Diese Option ist eine Alternative zur Verwendung von "--main"; Sie können nicht beides verwenden.

-static-libgcj
Diese Option bewirkt, dass die Verknüpfung mit einer statischen Version der libgcj-Laufzeit durchgeführt wird
Bücherei. Diese Option ist nur verfügbar, wenn eine entsprechende Linker-Unterstützung vorhanden ist.

Vorsicht: Statisches Linken von libgcj kann dazu führen, dass wesentliche Teile von libgcj weggelassen werden.
Einige Teile von libgcj verwenden Reflektion, um Klassen zur Laufzeit zu laden. Da der Linker dies tut
diese Referenzen zur Linkzeit nicht sehen, können die Klassen, auf die verwiesen wird, weggelassen werden. Die
Ergebnis ist normalerweise (aber nicht immer) eine "ClassNotFoundException", die zur Laufzeit geworfen wird.
Bei der Verwendung dieser Option ist Vorsicht geboten. Weitere Einzelheiten finden Sie unter:
<http://gcc.gnu.org/wiki/Statically%20linking%20libgcj>

Code Generation
Neben den vielen gcc Optionen zur Steuerung der Codegenerierung, gcj hat mehrere Möglichkeiten
spezifisch für sich.

-C Diese Option wird verwendet, um zu sagen gcj Bytecode generieren (.Klasse Dateien) statt Objekt
Code.

--Ressource Ressourcenname
Diese Option wird verwendet, um zu sagen gcj um den Inhalt einer bestimmten Datei in Objektcode zu kompilieren
so kann zur Laufzeit mit dem Core Protocol Handler als . darauf zugegriffen werden Ader:/Ressource-
Name. Beachten Sie, dass Ressourcenname ist der Name der Ressource, wie er zur Laufzeit gefunden wurde; zum
Beispielsweise könnte es in einem Aufruf von "ResourceBundle.getBundle" verwendet werden. Die eigentliche Datei
Der so zu kompilierende Name muss separat angegeben werden.

-fziel=VERSION
Dies kann mit verwendet werden -C um die Version des von ausgegebenen Bytecodes zu wählen gcjdem „Vermischten Geschmack“. Seine
Standard ist 1.5. Wenn kein Bytecode generiert wird, hat diese Option keine Auswirkung.

-d Verzeichnis
Bei Verwendung mit "-C" verursacht dies alle generierten .Klasse Dateien, die in die
entsprechendes Unterverzeichnis von Verzeichnis. Standardmäßig werden sie in Unterverzeichnisse abgelegt
des aktuellen Arbeitsverzeichnisses.

-fno-bounds-check
Standardmäßig gcj generiert Code, der die Grenzen aller Array-Indizierungen überprüft
Operationen. Bei dieser Option entfallen diese Prüfungen, was die Leistung verbessern kann
für Code, der ausgiebig Arrays verwendet. Beachten Sie, dass dies zu unvorhersehbaren
Verhalten, wenn der fragliche Code tatsächlich die Einschränkungen der Array-Grenzen verletzt. Es
ist sicher, diese Option zu verwenden, wenn Sie sicher sind, dass Ihr Code niemals eine
"ArrayIndexOutOfBoundsException".

-fno-store-check
Generieren Sie keine Array-Speicherprüfungen. Beim Speichern von Objekten in Arrays wird eine Laufzeitprüfung
wird normalerweise generiert, um sicherzustellen, dass das Objekt zuweisungskompatibel mit
der Komponententyp des Arrays (der zur Kompilierzeit möglicherweise nicht bekannt ist). Mit diesem
Option werden diese Prüfungen weggelassen. Dies kann die Leistung von Code verbessern, der speichert
Objekte in Arrays häufig. Es ist sicher, diese Option zu verwenden, wenn Sie sicher sind, dass Ihr
Code wird niemals eine "ArrayStoreException" auslösen.

-fjni
Mit der gcj Es gibt zwei Möglichkeiten, native Methoden zu schreiben: CNI und JNI. Standardmäßig
gcj geht davon aus, dass Sie CNI verwenden. Wenn Sie eine Klasse mit nativen Methoden kompilieren und
Diese Methoden werden mit JNI implementiert, dann müssen Sie "-fjni" verwenden. Diese Option
Ursachen gcj um Stubs zu generieren, die die zugrunde liegenden JNI-Methoden aufrufen.

-fno-behaupten
Erkenne das Schlüsselwort "assert" nicht. Dies dient der Kompatibilität mit älteren Versionen
der Sprachspezifikation.

-fno-optimize-static-class-initialization
Wenn die Optimierungsstufe größer oder gleich "-O2" ist, gcj werde versuchen das zu optimieren
Art und Weise, wie Aufrufe in die Laufzeit ausgeführt werden, um statische Klassen bei ihrer ersten Verwendung zu initialisieren
(Diese Optimierung wird nicht durchgeführt, wenn "-C" angegeben wurde.) Beim Kompilieren nach native
Code, "-fno-optimize-static-class-initialization" schaltet diese Optimierung aus,
unabhängig von der verwendeten Optimierungsstufe.

--disable-assertions[=Klasse-oder-Paket]
Fügen Sie keinen Code zum Überprüfen von Assertionen in den kompilierten Code ein. Wenn
"=Klasse-oder-Paket" fehlt, deaktiviert die Generierung von Assertionscode für alle Klassen.
es sei denn, es wird durch ein spezifischeres Flag "--enable-assertions" überschrieben. Wenn Klasse-oder-Paket
ein Klassenname ist, deaktiviert nur das Generieren von Assertionsprüfungen innerhalb der benannten Klasse oder
seine inneren Klassen. Wenn Klasse-oder-Paket ist ein Paketname, deaktiviert die Generierung
Assertionsprüfungen innerhalb des genannten Pakets oder eines Unterpakets.

Assertionen sind standardmäßig aktiviert, wenn Klassendateien generiert oder nicht optimiert werden.
und deaktiviert, wenn optimierte Binärdateien generiert werden.

--enable-assertions[=Klasse-oder-Paket]
Generiert Code, um Assertionen zu überprüfen. Die Option ist vielleicht falsch benannt, da du sie noch brauchst
um die Assertionsprüfung zur Laufzeit zu aktivieren, und wir unterstützen keine einfache Möglichkeit
das. Dieses Flag ist also noch nicht sehr nützlich, außer zum teilweisen Überschreiben
"--disable-assertions".

-findirect-versand
gcj hat eine spezielle Binärkompatibilitäts-ABI, die durch die
Option "-findirect-dispatch". In diesem Modus wird der von . generierte Code gcj ehrt die
Binärkompatibilitätsgarantien in der Java Language Specification und die daraus resultierenden
Objektdateien müssen nicht direkt mit ihren Abhängigkeiten verknüpft werden. Stattdessen,
alle Abhängigkeiten werden zur Laufzeit nachgeschlagen. Dies ermöglicht das freie Mischen von interpretierten und
kompilierten Code.

Beachten Sie, dass "-findirect-dispatch" derzeit nur beim Kompilieren verwendet werden kann .Klasse
Dateien. Es wird nicht funktionieren, wenn aus dem Quellcode kompiliert wird. CNI arbeitet auch noch nicht mit
die Binärkompatibilitäts-ABI. Diese Beschränkungen werden in Zukunft aufgehoben
freizugeben.

Wenn Sie jedoch CNI-Code mit dem Standard-ABI kompilieren, können Sie ihn aus Code aufrufen
gebaut mit der Binärkompatibilität ABI.

-fbootstrap-Klassen
Diese Option kann verwendet werden, um "libgcj" mitzuteilen, dass die kompilierten Klassen von geladen werden sollen
der Bootstrap-Loader, nicht der Systemklassen-Loader. Standardmäßig, wenn Sie eine Klasse kompilieren
und in eine ausführbare Datei verlinken, wird sie so behandelt, als ob sie mit dem geladen wurde
Systemklassenlader. Das ist praktisch, denn es bedeutet, dass Dinge wie
"Class.forName()" wird suchen KLASSENPFAD um die gewünschte Klasse zu finden.

-reduzierte-Reflexion
Diese Option bewirkt, dass der Code generiert wird von gcj eine reduzierte Menge der Klasse enthalten
Metadaten, die zur Unterstützung der Laufzeitreflexion verwendet werden. Die Kosten dieser Einsparungen sind der Verlust von
die Möglichkeit, bestimmte Reflexionsfunktionen der Standard-Java-Laufzeit zu verwenden
Umgebung. Wenn alle Metadaten eingestellt sind, außer denen, die benötigt werden, um korrekt zu erhalten
Laufzeitsemantik entfällt.

Für Code, der keine Reflektion verwendet (z. B. Serialisierung, RMI, CORBA oder Aufrufmethoden)
im Paket "java.lang.reflect") führt "-freduced-reflection" zu einem korrekten
Betrieb mit einer Einsparung an ausführbarer Codegröße.

JNI ("-fjni") und die Binärkompatibilitäts-ABI ("-findirect-dispatch") funktionieren nicht
ohne vollständige Reflexion der Metadaten korrekt. Aus diesem Grund ist die Verwendung ein Fehler
diese Optionen mit "-freduced-reflexion".

Vorsicht: Wenn keine Reflection-Metadaten vorhanden sind, kann Code, der einen "SecurityManager" verwendet,
nicht richtig arbeiten. Auch der Aufruf von "Class.forName()" kann fehlschlagen, wenn die aufrufende Methode
keine Reflexions-Metadaten.

Konfigurationszeit Optionen
Manche gcj Optionen zur Codegenerierung wirken sich auf die resultierende ABI aus und können daher nur
sinnvoll angegeben, wenn "libgcj", das Laufzeitpaket, konfiguriert ist. "libgcj" setzt die
entsprechende Optionen aus dieser Gruppe in a spec Datei, die gelesen wird von gcj. Diese Optionen
sind hier der Vollständigkeit halber aufgeführt; Wenn Sie "libgcj" verwenden, möchten Sie es nicht berühren
diese Optionen.

-sicherung-boehm-gc
Dies ermöglicht die Verwendung des Boehm GC Bitmap-Markierungscodes. Dies verursacht insbesondere
gcj um einen Objektmarkierungsdeskriptor in jede vtable einzufügen.

-fash-Synchronisierung
Standardmäßig werden Synchronisationsdaten (die Daten, die für "Synchronisieren", "Warten" und
"benachrichtigen") wird durch ein Wort in jedem Objekt gezeigt. Mit dieser Option gcj nimmt das an
diese Informationen werden in einer Hash-Tabelle und nicht im Objekt selbst gespeichert.

-Fuse-Divide-Unterprogramm
Auf einigen Systemen wird eine Bibliotheksroutine aufgerufen, um eine Ganzzahldivision durchzuführen. Das ist
erforderlich, um eine korrekte Ausnahmebehandlung bei der Division durch Null zu erhalten.

-fcheck-Referenzen
Auf einigen Systemen ist es notwendig, bei jedem Zugriff auf ein Objekt Inline-Prüfungen einzufügen
über eine Referenz. Auf anderen Systemen benötigen Sie dies nicht, da Null-Zeiger-Zugriffe
werden vom Prozessor automatisch abgefangen.

-Sicherung-Atom-Einbauten
Auf einigen Systemen kann GCC Code für integrierte atomare Operationen generieren. Benutze das
Option, um gcj zu zwingen, diese Built-Ins beim Kompilieren von Java-Code zu verwenden. Wo dies
Funktion vorhanden ist, sollte sie automatisch erkannt werden, sodass Sie sie normalerweise nicht benötigen
um diese Option zu nutzen.

Verwenden Sie aarch64-linux-gnu-gcj online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad