gefunden werden kann, wie ich bin vorausgesetzt, Sie wollen die Bedeutung von Befehlen
Der Befehl zum Kompilieren sieht ungefähr so aus:
swift -frontend -gnone -O -Xfrontend -disable-rote-Zone -Xcc -mno-rote-Zone -Xcc -mno-mmx -Xcc -mno-sse -Xcc -mno -sse2 -parse-as-library -import-objc-header -whole-modul-optimierung -modulname MyModule -emit-object -o -gnone deaktiviert Debug-Informationen, die wahrscheinlich nicht sehr nützlich sind, bis Sie irgendeine Art von Debugger-Unterstützung haben
-O ist für die Optimierung, die anderen Optionen sind -Onone, die es ausschaltet, sondern produziert eine größere Menge an Code und -Ounched was ist -O aber ohne zusätzliche Prüfungen nach bestimmten Operationen. -O erzeugt einen guten Code, neigt aber dazu, alles in eine große Funktion einzubinden, was es schwierig machen kann zu trainieren, was schief gelaufen ist, wenn ein Ausnahmebehandler einfach den Befehlszeiger als Quelle eines Fehlers angibt.
-Xfrontend -disable-red-zone stellt sicher, dass vom swiftc erzeugter Code keinen roten Zonencode generiert.
-Xcc -mno-red-zone weist den clang-Compiler an, die rote Zone für die kompilierten Dateien nicht zu verwenden.clang wird verwendet, wenn in der von Ihnen verwendeten Header-Datei ein Code vorhanden ist, der wahrscheinlich der Fall sein wird, wie gezeigt wird.
-Xcc -mno-MMX -Xcc -mno-sse -Xcc -mno-sse2 verwendet Optionen Klirren swiftc zu sagen, nicht MMX/SSE/SSE2
-parse-as-Bibliothek zu verwenden, bedeutet, dass der Code ist kein Skript.
-import-objc-Header ermöglicht eine .h Header-Datei importiert werden, die den Zugriff auf Definitionen C-Funktion und Art ermöglicht.
-Modul-Name erforderlich ist, wenn auch nur in voll qualifizierenden die Methode und Funktionsnamen verwendet wird. Mit dieser Option werden jedoch keine tatsächlichen Moduldateien erstellt.
Bibliotheken
Nun, da eine .o ELF-Datei muss produziert wurde es auf eine endgültige ausführbare Datei verknüpft werden. Swift erfordert, dass seine stdlib verknüpft ist, da dies einige grundlegende Funktionen bereitstellt, die Swift zur Laufzeit benötigt.
Der Bibliotheksname ist libswiftCore.a und in lib/swift_static/Linux unter dem Installationsverzeichnis sein sollte.
libswiftCore.a setzt auf libc, libcpp und ein paar andere Systembibliotheken aber sie verfügbar sein werde nicht so die fehlenden Funktionen emuliert werden müssen. Die vollständige Liste der Symbole, die hier können umgesetzt werden müssen gefunden: - https://github.com/spevans/swift-project1/blob/master/doc/symbols.txt
Haben Sie eine Lösung gefunden? –
Nein, ich dachte nicht daran, dass ich einen Workaround machen und meine eigenen (einzeiligen) Funktionen schreiben könnte, die jeweils nur eine Swift-Funktion genannt haben. Auf diese Weise konnte ich überprüfen, welche meiner Funktionen aufgerufen wurde und dann wusste ich, welche Swift-Methode welche war. Es ist jedoch keine großartige Lösung. – rankAmateur