Sto costruendo una libreria condivisa su Ubuntu 9.10. Voglio esportare solo un sottoinsieme delle mie funzioni dalla libreria. Sulla piattaforma Windows, ciò avverrebbe utilizzando un file di definizione del modulo (.def
) che conterrà un elenco dei nomi esterni e interni delle funzioni esportate dalla libreria.Esiste un file .def equivalente su Linux per il controllo dei nomi delle funzioni esportate in una libreria condivisa?
Ho le seguenti domande:
Come posso limitare le funzioni esportate di una libreria condivisa a coloro che voglio (cioè un file di DEF equivalente)
Utilizzo di file DEF come un esempio, puoi assegnare a una funzione un nome esterno diverso dal suo nome interno (utile per evitare conflitti di nomi e anche ridecorare nomi storpiati ecc.)
Su Windows Posso usare il comando EXPORT (IIRC) su ch eck l'elenco delle funzioni e degli indirizzi esportati, qual è il modo equivalente di farlo su Linux?
Non è effettivamente necessario per decorarle con visibilità impostata di default, in quanto questo è il default ... –
@Fredrik Ullner: I non capisco il tuo punto. Se usi '-fvisibility = hidden' allora devi reimpostare la visibilità al default di quei simboli che non vuoi nascosti altrimenti nessun simbolo sarebbe visibile. –
"quindi decora i simboli che vuoi essere visibili con __attribute __ ((visibilità (" default ")))." Non è necessario farlo, poiché questo è l'impostazione predefinita. –