Je cherche des façons de restreindre le nombre de symboles C exportés vers une bibliothèque statique Linux (archive). J'aimerais les limiter aux seuls symboles faisant partie de l'API officielle de la bibliothèque. J'utilise déjà 'static' pour déclarer la plupart des fonctions comme statiques, mais cela les limite à la portée du fichier. Je cherche un moyen de restreindre à la portée de la bibliothèque.Restriction des symboles dans une bibliothèque statique Linux
Je peux le faire pour les bibliothèques partagées en utilisant les techniques de How to Write Shared Libraries d'Ulrich Drepper, mais je ne peux pas appliquer ces techniques aux archives statiques. Dans son article Good Practices in Library Design plus tôt, il écrit:
La seule possibilité est de combiner tous les fichiers objets qui ont besoin certaines ressources internes en une seule en utilisant « ld -r » et limiter les symboles qui sont exportés par ce combiné fichier objet. L'éditeur de liens GNU propose des options pour .
Quelqu'un pourrait-il m'aider à découvrir ce que ces options pourraient être? J'ai eu un certain succès avec 'strip -w -K prefix_ *', mais cela semble brutal. Idéalement, je voudrais une solution qui fonctionne aussi bien avec GCC 3 et 4.
Merci!
Cela fonctionnerait si vous avez tout dans un fichier ou vous pouvez le compiler. Souvent, vous ne le faites pas. Parfois, vous devez avoir de petits fichiers à combiner avec d'autres langues (par exemple Haskell - c'est la raison pour laquelle j'ai trouvé cette page). –
@Maciej: Eh bien OP a demandé à propos de gcc ... – Joshua