Question

Je trouve que lorsque j'associez un exécutable contre une bibliothèque statique (.a), les symboles de la bibliothèque statique finissent par être exportés par le fichier exécutable. Je voudrais éviter cela et rien exporter.

Je l'ai essayé fournir un script de version, mais il semble faire aucune différence. Le contenu de mon script version sont les suivantes:

{
    global:
        main;
    local:
        *;
};

Est-il possible de ne pas exporter les symboles d'un exécutable lors de la liaison dans une bibliothèque statique? Je ne peux pas recompiler la bibliothèque statique lui-même.

Était-ce utile?

La solution

Exécutables n'exportent des symboles par défaut, et ne le feront pas à moins que vous utilisez -Wl, - dynamique export. Cela est nécessaire que si vous êtes dynamique chargement des bibliothèques qui eux-mêmes doivent relier en symboles dans l'exécutable principal (ce qui est un cas fréquent en C ++ si vos bibliothèques contiennent des classes qui surchargent les méthodes virtuelles dans l'exe)

Peut-être que vous confondez symboles exportateurs d'avoir des symboles de débogage. symboles de débogage seront produits au profit du débogueur (si vous ne supprime pas l'exe), mais ne sont pas tenus d'exécuter.

Autres conseils

Utilisez strip?

bande homme $

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top