-fvisibility=hidden
membuat semua simbol Anda tersembunyi secara default .
Apa yang harus Anda lakukan selanjutnya adalah memilih fungsi mana yang Anda inginkan agar dapat dilihat oleh pengguna yang menautkan ke perpustakaan Anda dan membuatnya terlihat dengan menandainya dengan atribut yang terlihat.
Mis.
void __attribute__((visibility("default"))) Exported()
{
// ...
}
Ini mengurangi penyimpanan informasi simbol yang tidak perlu yang bersifat pribadi ke Objek Bersama.
Pertimbangkan objek bersama yang memiliki lebih dari 10.000 simbol (fungsi/variabel global), tetapi hanya 100 di antaranya yang merupakan fungsi publik yang dapat diakses oleh pengguna perpustakaan. Kami dapat membuat hanya 100 fungsi yang terlihat oleh orang lain dan 9.900 simbol lainnya akan dirahasiakan.
Ini juga dapat digunakan untuk mengurangi ukuran objek yang dibagikan, karena tabel relokasinya hanya memiliki 100 simbol informasi. Menggunakan flag ini bersama dengan -ffunction-sections -fdata-sections akan mengurangi ukuran objek bersama lebih lanjut dengan memiliki definisi yang relevan dengan 100 simbol tersebut.