Ich bleibe bei der Verwendung der folgenden zwei Dateien, die Mcrt1.o und Scrt1.o sind. Kann jemand mir helfen zu wissen, wofür diese zwei Dateien sind? Wie man es benutzt? Lassen Sie uns zum Beispiel gcrt1.o nehmen, was sehr nützlich ist, wenn Sie mit der Option -pg für den Leistungstest kompilieren. DankeWas ist die Verwendung von Mcrt1.o und Scrt1.o?
5
A
Antwort
7
Dateien des Formulars *crt*.o
sind ausnahmslos C-Laufzeit-Startcode (der Großteil der C-Laufzeit besteht in Bibliotheken, der Startcode ist eine Objektdatei, wie sie immer benötigt wird).
Die Beschreibung der verschiedenen Typen kann here gefunden werden, kopiert unten, um die Antwort in sich geschlossen zu machen. Zunächst einige Definitionen:
Mini FAQ about the misc libc/gcc crt files.
Some definitions:
PIC - position independent code (-fPIC)
PIE - position independent executable (-fPIE -pie)
crt - C runtime
Dann werden die verschiedenen Startobjektdateien:
crt0.o
Older style of the initial runtime code ? Usually not generated anymore
with Linux toolchains, but often found in bare metal toolchains. Serves
same purpose as crt1.o (see below).
crt1.o
Newer style of the initial runtime code. Contains the _start symbol which
sets up the env with argc/argv/libc _init/libc _fini before jumping to the
libc main. glibc calls this file 'start.S'.
crti.o
Defines the function prolog; _init in the .init section and _fini in the
.fini section. glibc calls this 'initfini.c'.
crtn.o
Defines the function epilog. glibc calls this 'initfini.c'.
Scrt1.o
Used in place of crt1.o when generating PIEs.
gcrt1.o
Used in place of crt1.o when generating code with profiling information.
Compile with -pg. Produces output suitable for the gprof util.
Mcrt1.o
Like gcrt1.o, but is used with the prof utility. glibc installs this as
a dummy file as it's useless on linux systems.
Und einige andere:
crtbegin.o
GCC uses this to find the start of the constructors.
crtbeginS.o
Used in place of crtbegin.o when generating shared objects/PIEs.
crtbeginT.o
Used in place of crtbegin.o when generating static executables.
crtend.o
GCC uses this to find the start of the destructors.
crtendS.o
Used in place of crtend.o when generating shared objects/PIEs.
Schließlich gemeinsame Verknüpfung Reihenfolge:
General linking order:
crt1.o crti.o crtbegin.o [-L paths] [user objects] [gcc libs]
[C libs] [gcc libs] crtend.o crtn.o
Verwandte Themen
- 1. crt0.o und crt1.o - Was ist der Unterschied?
- 2. Unterschied zwischen O (n) und O (log (n)) - was ist besser und was genau ist O (log (n))?
- 3. ListBox.FindString Was ist die Worst-Case-Laufzeit? O (n), O (n log n), O (1) & rarr;
- 4. Was ist O (log * N)?
- 5. Was ist die Big O-Leistung von Karten in Golang?
- 6. Emacs-Äquivalente von Vim's dd, o, O
- 7. Zwischen O (nlog * n) und O (n)?
- 8. Warum die Verschiebung von O (1) Scheduler zu CFS, die O (log N) ist?
- 9. Was ist der Unterschied zwischen O (1) und Θ (1)?
- 10. Was ist die Big-O-Anweisung für WHERE NOT IN?
- 11. Big-O von .GetProperties()
- 12. @Transactional und entityManager.persist (o);
- 13. Was ist die Big-O-Komplexität meines Codes?
- 14. Verständnis von Big O
- 15. Was bedeutet "O (1) Zugriffszeit"?
- 16. Ist die Kartensuche in Elixir O (1)?
- 17. Fundnummer, die in O (n) O (1) Raum
- 18. Mergesort Komplexität O (nlogn) + O (n)?
- 19. Problem mit FILE I/O und Verwendung von Daten innerhalb
- 20. Was ist die große O of Oracles MAX-Funktion?
- 21. Was ist der Unterschied zwischen .o .a und .so Dateien?
- 22. Was ist das große O von Linq? Wo?
- 23. Python Name ‚o‘ ist nicht
- 24. Optimierungs-Algorithmus von O (n^3) bis O (n^2)
- 25. Was ist eine Groß-O-Notation? Wie kommst du auf Zahlen wie O (n)?
- 26. Was bedeuten die Begriffe "CPU gebunden" und "I/O gebunden"?
- 27. Deaktivieren der Startmeldung von vim (vimdiff, vim -o -O)
- 28. In Java, für eine Zeichenfolge x, was sind die Laufzeitkosten von s.length()? Ist es O (1) oder O (n)?
- 29. Warum ist Data.Sequence.Reverse O (n)?
- 30. Warum ist die Zeitkomplexität für BFS/DFS nicht einfach O (E) anstatt O (E + V)?
I don Ich weiß nicht, in welchem Szenario wir Scrt1.oi verwenden werden anstelle von crt1.o? – Daniel