Linker, Loader und ausführbare Formate

Welcher Vorteil ergibt sich, wenn man beim Erstellen einer Shared Library nur die von außen genutzten Funktionen veröffentlicht und die Sichtbarkeit (Visibility) der Symbole interner Funktionen auf „hidden“ setzt?

  1. ADie internen Funktionen werden verschlüsselt und sind nicht analysierbar
  2. BDie Zahl der vom dynamischen Linker behandelten Symbole sinkt, das Laden wird schneller, und interne Aufrufe müssen nicht über die PLT laufen
  3. CDie Bibliothek läuft auf jedem Betriebssystem
Antwort und Erläuterung anzeigen

Antwort: B. Die Zahl der vom dynamischen Linker behandelten Symbole sinkt, das Laden wird schneller, und interne Aufrufe müssen nicht über die PLT laufen

Veröffentlichte Symbole einer Shared Library können durch gleichnamige Definitionen anderer Module ersetzt werden; auch interne Aufrufe müssen daher über PLT und GOT laufen. Mit hidden sind sie von außen nicht sichtbar, die Zahl der vom dynamischen Linker zu prüfenden Symbole sinkt, und interne Aufrufe können direkt PC-relativ erfolgen. Auch Namenskollisionen mit anderen Bibliotheken werden vermieden, und die veröffentlichte ABI bleibt klein.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welcher Mechanismus lässt in C++ die Konstruktoren globaler Objekte vor main ausführen?
  2. Welche Aussage zur vom Compiler aus einer Quelldatei ausgegebenen Objektdatei (.o) ist richtig?
  3. Welche Aussage zur Hauptaufgabe des Linkers ist richtig?
  4. Welche Aussage zur vom Linker durchgeführten Symbolauflösung ist richtig?
  5. Welche Aussage zur vom Linker durchgeführten Relokation ist richtig?

Vergleiche zu diesem Thema