Comment masquer les symboles exportés nom dans une bibliothèque partagée

Pour le CR, je me permet d'écrire un fichier DEF et l'utilisation de la "NONAME" directive pour ne laissant que le numéro de séquence dans la dll à l'exportation du tableau.

Comment pourrais-je faire la même chose avec gcc et le format ELF bibliothèque partagée?

Ou, est-il quelque chose d'équivalent en ELFE de la bibliothèque partagée, comme le numéro de séquence dans un format PE DLL? Si non, comment pourrais-je cacher la exporté nom du symbole à l'intérieur d'une bibliothèque partagée?

======================================

Mise à JOUR: Certains des descriptions supplémentaires:

Dans Windows, vous pouvez exporter une fonction en un seul endroit ID de type entier (l'ordinal) avec un nom vide.

De le montrer, la mise en page d'une dll à l'exportation du tableau ressemble à ceci: http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo22.gif.

la "NONAME" on ressemble à ceci: http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo23.gif.

Avis les fonctions nom "N/A" dans la seconde image. Voici une explication: hxxp://home.hiwaay.net/~georgech/WhitePapers/Exporting/Exp.htm.

======================================

Mise à JOUR: beaucoup de grâce pour tous ceux qui me font des conseils. Finalement, je décide de garder l'utilisation d'une librairie statique sur linux/posix plates-formes. Mais l'extrait de la petite "partie spéciale" (qui est l'utilisation de certaines fonctionnalités ne convient pas pour la lib statique, e.g: TLS Logement, etc.) normal partagée de la bibliothèque de. Parce que les petites normal partagée de la bibliothèque de ne faire que peu de choses, et ces travaux sont totalement insensible à la casse, donc il n'est pas nécessaire à masquer/cacher ses Api.

Je pense que c'est la façon la plus simple de résoudre mon problème 😀

si j'ai rayé un symbole dynamique de l' .donc, fichier, je pourrais l'appeler de nouveau à partir d'une autre application en utilisant quelque chose comme un numéro de série?
Le point est que la plupart Linux gens ne savent pas ce qu'est un NONAME directive dans le monde Windows (au moins je n'ai pas, puisque je n'ai jamais utilisé ou codée pour Windows). Vous devriez donc vous expliquer ce que cela signifie (et qu'est ce qu'un "numéro de séquence dans un PE"). Plus généralement, expliquer ce que vous voulez vraiment réaliser, sans référence à la façon dont Windows est en train de faire.
Vos commentaires sur les différentes réponses de l'information plus détaillée de la question. Vous devriez envisager l'édition de votre question pour inclure cette information.
Ok, vous avez raison Basile, je vais ajouter des explications supplémentaires. Mais en quelques mots: je neet exporter une fonction mais de cacher son nom.
Mais l'exportation d'une fonction et de cacher son nom est, dans le monde de Linux, une contradiction en soi. Vous aurez un fichier d'en-tête pour votre bibliothèque, et que le fichier d'en-tête la mention des fonctions exportées par noms (sinon, cette fonction n'est pas exporté, même si certains trucs sales qui pourrait être accessible).

OriginalL'auteur ASBai | 2012-03-10