Dies bedeutet, dass die Sichtbarkeit des Symbols verborgen ist: Ссылка
Gründe für das Ändern der Sichtbarkeit von Symbolen sind:
Weitere Informationen finden Sie unter Ссылка / p>
Ein Link, Sichtbarkeit Unterstützung (GCC)
erklärtVom Link:
Es verbessert wesentlich die Ladezeiten Ihres DSO (Dynamic Shared Object). Zum Beispiel kann eine große C ++ Template-basierte Bibliothek, die (die TnFOX Boost.Python Bindungen Bibliothek) getestet lädt nun in acht Sekunden statt über sechs Minuten!
Damit kann der Optimierer besseren Code erzeugen. PLT Indirekt (wenn ein Funktionsaufruf oder variablen Zugriff muss über die Global Offset Tabelle nachgeschlagen wird wie in Code PIC) vollständig somit weitgehend vermieden wird vermieden Pipeline-Blockierungen auf moderne Prozessoren und damit viel schnellen Code. Wenn die meisten Symbole lokal gebunden sind, können sie außerdem vollständig durch das gesamte DSO entfernt (entfernt) werden. Dies gibt einen größeren Spielraum insbesondere für die Inliner, die nicht mehr benötigt einen Einstiegspunkt zu halten, um „just in case“.
Reduziert die Größe Ihres DSO um 5-20%. Das exportierte Symboltabellenformat von ELF ist ziemlich space-hog und gibt den vollständigen Namen des Mangelsymbols an, das bei starker Verwendung von Vorlagen ungefähr 1000 Bytes umfassen kann. C ++ Vorlagen speien eine große Anzahl von Symbolen aus und eine typische C ++ Bibliothek kann 30.000 Symbole leicht übertreffen, was ungefähr 5-6 MB ist! Deshalb, wenn Sie das 60-80% der unnötigen Symbole ausschneiden, kann Ihr DSO sein Megabyte kleiner!
Deutlich geringere Wahrscheinlichkeit einer Symbolkollision. Das alte Elend zweier Bibliotheken, die intern das gleiche Symbol für verschiedene Dinge verwenden, ist mit diesem Patch endlich hinter uns. Halleluja!
Obwohl die oben angegebene Bibliothek ein Extremfall ist, reduzierte die neue Sichtbarkeitsunterstützung die exportierte Symboltabelle von & gt; 200.000 Symbole auf weniger als 18.000. Einige 21Mb wurden auch von der binären Größe abgeschlagen!
Nutzungsbeispiel und potentielle Fallstricke bei Verwendung des Sichtbarkeitsattributs