GNU/Linux >> Znalost Linux >  >> Linux

C++ -fvisibility=hidden -fvisibility-inlines-hidden

-fvisibility=hidden skryje všechny vaše symboly ve výchozím nastavení .

Co pak musíte udělat, je vybrat, které funkce chcete zviditelnit uživatelům, kteří odkazují na vaši knihovnu, a zviditelnit je tak, že je označíte viditelným atributem.

Např.

void __attribute__((visibility("default"))) Exported()
{
    // ...
}

Omezuje ukládání nepotřebných informací o symbolech, které jsou soukromé pro sdílené objekty.

Uvažujme sdílený objekt, který má více než 10 000 symbolů (funkcí/globálních proměnných), ale pouze 100 z nich byly veřejné funkce přístupné uživatelům knihovny. Můžeme zviditelnit pouze 100 funkcí a zbývajících 9 900 symbolů bude soukromých.

Lze jej také použít ke zmenšení velikosti sdíleného objektu, protože jeho relokační tabulka bude mít pouze 100 symbolů informací. Použití tohoto parametru spolu s -ffunction-sections -fdata-sections dále sníží velikost sdíleného objektu tím, že bude mít definici, která je relevantní pro těchto 100 symbolů.


Linux
  1. Dynamická sdílená knihovna C++ v systému Linux

  2. C++ Boost ASIO jednoduchý periodický časovač?

  3. Podivný název symbolu ve výstupu příkazu nm

  1. C++ získat název distribuce linux\verze

  2. Vliv usleep(0) v C++ na Linuxu

  3. Rozhraní příkazového řádku C++

  1. Proč je proměnná viditelná v podslupce?

  2. Co znamenají symboly zobrazené pomocí Ls -f?

  3. Volání funkce C z kódu C++