-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ů.