Ich verwende einen Prozessor, der Sparc v8-Architektur verwendet. Ich möchte meine ausführbare Datei so kompilieren, dass jeder Funktionsaufruf absolute Adresse ist. Verwenden Sie die Option -fPIC, um positionsunabhängigen Code zu generieren. Gibt es eine Umkehrung dieses Flags?Positionsabhängiger Code
1
A
Antwort
1
Die meisten GCC-Optionen haben die Varianten -fxxx
und -fno-xxx
.
Sie können leicht testen, ob dies für fPIC
der Fall ist. Nur kompilieren einigen einfachen Test:
int main() { printf ("Hello, world!\n"); }
mit Kommandozeile:
gcc -fPIC test.c -S
und sucht nach PLT-Relativ Aufruf in Assembler
call [email protected]
Nun versuchen, diese Option mit seiner Rückseite zu stornieren :
gcc -fPIC test.c -S -fno-PIC
Sie werden sehen, dass der PLT-relative Aufruf weg ist, also funktioniert alles.
Verwandte Themen
- 1. Positionsabhängiger, unabhängiger Code und globale Variablen in PowerPC-Baugruppe
- 2. Code Contracts + Code Analysis
- 3. "System" -Code zu "System.Linq" -Code
- 4. Convert Code To RxJava2 Code
- 5. schreiben Code in Pseudo-Code
- 6. Code Contracts vs Code Analysatoren
- 7. Code-Formatierung in Visual Studio CODE funktioniert nicht C# Code
- 8. Mixing VB.net Code mit C# Code
- 9. OpenMP-Code zu C-Code kompilieren
- 10. Umwandlung von Gridview-Code in ListView-Code
- 11. Build "native code + wrapper + managed code" Projekte
- 12. Code Formatter: Aufräumen schrecklich formatiert JSP-Code
- 13. Code-Analysator speziell für gwt-Code?
- 14. SQL Server 2000 wo Code = Code aus
- 15. PHP Was ist schneller {$ code} oder. $ Code?
- 16. Reverse-Ingenieur-Assembly-Code zu c-Code
- 17. Mein Code ist die falsche Code-Sektion
- 18. Wie Java (Awt) Code in Jsp-Code
- 19. unsicher über diesen Code, hat Code Geruch!
- 20. Umwandlung von R-Code in C-Code
- 21. Code ausführen, wenn dieser Code ausgeführt wird
- 22. Pyside-Code in pyqt5-Code konvertieren
- 23. Visual Studio Code fügt kein Code-Snippet
- 24. Rmarkdown Inline-Code vs. Code Chunk
- 25. Java-Code in schnellen Clojure-Code umwandeln
- 26. Wie jQuery-Code in nutzbare AngularJS Code
- 27. wie Event-Handler-Code von JavaScript-Code
- 28. Component Designer generierten Code in Code hinter
- 29. Konvertieren von C++ - Code in C# -Code
- 30. Wie html code von css code trennen
Oh ich verstehe. Der Sparc v8 Befehlssatz enthält zwei Anweisungen zum Springen. "call" für relativen Sprung und "jmpl" für absoluten Sprung. Also muss es möglich sein, Code mit absoluten Sprüngen zu erzeugen. Ich habe gerade mit dem sparc gcc mit -fno-pic versucht. Obwohl der Code kompiliert wird, erzeugt er immer noch Bildcode. Muss ich dieses Flag auch an Linker übergeben? – Prakhar
Nein, nur Compiler-Option. Es gibt einen Unterschied zwischen fno-PIC und fno-pic (großer und kleiner Modus). Compiler-Zeile prüfen: Die Cancel-Option soll zuletzt gehen und im selben Fall sein. –