GNU/Linux >> Linux Esercitazione >  >> Linux

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

-fvisibility=hidden rende tutti i tuoi simboli nascosti per impostazione predefinita .

Quello che devi fare è scegliere quali funzioni vuoi che siano visibili agli utenti che si collegano alla tua libreria e renderle visibili contrassegnandole con un attributo visibile.

Ad esempio

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

Riduce la memorizzazione di informazioni sui simboli non necessarie che sono private per gli oggetti condivisi.

Considera un oggetto condiviso che ha più di 10.000 simboli (funzioni/variabili globali), ma solo 100 di essi erano funzioni pubbliche accessibili agli utenti della biblioteca. Possiamo rendere le uniche 100 funzioni visibili agli altri e i restanti 9.900 simboli devono essere mantenuti privati.

Può essere utilizzato anche per ridurre le dimensioni dell'oggetto condiviso, poiché la sua tabella di ricollocazione avrà solo 100 simboli di informazioni. Usando questo flag insieme a -ffunction-sections -fdata-sections ridurrà ulteriormente la dimensione dell'oggetto condiviso avendo la definizione che è rilevante per quei 100 simboli.


Linux
  1. Cosa significano i simboli visualizzati da Ls -f?

  2. Linux:le variabili d'ambiente sono visibili agli utenti non privilegiati su Linux?

  3. Windows 10 non è visibile su Grub?

  4. Come chiamare la funzione C in C++, la funzione C++ in C (mix di C e C++)

  5. stampa stack di chiamate in C o C++

Come compilare ed eseguire programmi C, C++ in Linux

Come posso profilare il codice C++ in esecuzione su Linux?

C++ Boost ASIO semplice timer periodico?

C++ ottiene il nome\versione della distribuzione Linux

Interfaccia a riga di comando C++

Chiama una funzione C dal codice C++