Sicherheit der Verknüpfung von C 17-, C 14- und C 11-Objekten
Die Verknüpfung von Objekten, die mit unterschiedlichen C-Standards kompiliert wurden, kann Fragen zur Sicherheit aufwerfen diese Objekte in einer einzigen Binärdatei zu kombinieren. Die folgende Analyse untersucht die spezifischen Auswirkungen der Verknüpfung von C 17-, C 14- und C 11-Objekten.
GCC-spezifische Überlegungen
Für GCC gilt die Verknüpfung einer beliebigen Kombination von Objekten nach den Standards C 11, C 14 oder C 17 erstellte Dokumente sind sicher. Dies liegt daran, dass GCC die ABI-Kompatibilität zwischen diesen verschiedenen Standards gewährleistet, wenn sie mit derselben Version kompiliert werden.
Das Verknüpfen von Objekten, die mit verschiedenen GCC-Versionen kompiliert wurden, kann jedoch zu Problemen führen, wenn die Funktionen instabil sind, selbst wenn die Standardversion dieselbe ist eines neueren Standards verwendet wurden. Beispielsweise kann das Kompilieren von Objekten mit GCC 4.9 und GCC 5 unter Verwendung des C 11-Standards aufgrund der experimentellen C 11-Unterstützung in GCC 4.x zu Inkompatibilität führen.
Andere Compiler
Details zur Sicherheit können je nach Compiler variieren. Es wird empfohlen, die Dokumentation für den jeweils verwendeten Compiler zu konsultieren.
Vorbehalte
Stellen Sie bei Verwendung von GCC sicher, dass die gemeinsam genutzte Bibliothek (libstdc .so) mindestens so ist new als die Version, die zum Kompilieren eines der verknüpften Objekte verwendet wird. Darüber hinaus können widersprüchliche Implementierungen von std::string in derselben Binärdatei koexistieren. Streben Sie daher nach Konsistenz bei ihrer Verwendung über Objekte hinweg.
Zusammenfassung
Verknüpfen von mit C kompilierten Objekten 17, C 14 und C 11 mit derselben Compilerversion ist im Allgemeinen sicher. Es bestehen jedoch potenzielle Kompatibilitätsprobleme, wenn Objekte verknüpft werden, die mit unterschiedlichen Compilerversionen kompiliert wurden, oder instabile Funktionen neuerer Standards verwendet werden. Informationen zu spezifischen Compileranforderungen finden Sie in der entsprechenden Dokumentation.
Das obige ist der detaillierte Inhalt vonIst die Verknüpfung von C 17-, C 14- und C 11-Objekten sicher möglich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!