2017-09-28 1 views
0

Je souhaite charger une bibliothèque à l'exécution en utilisant les appels dlopen + dlsym. Je veux énumérer les noms des fonctions qui devraient être chargées en utilisant dlsym() et charger ces fonctions en utilisant une simple boucle 'for'. Existe-t-il un moyen de marquer les fonctions (peut-être en utilisant un attribut 'gcc') à charger en utilisant les appels 'dl'?Attribut de fonction pour le chargement dynamique de fonctions

Merci, Ram.

+0

façon la plus simple serait de faire une fonction qui remplit les noms des fonctions, ou ont les comme une variable que vous 'dlsym' ... –

+0

Pouvez-vous s'il vous plaît expliquer plus? – ram

Répondre

0

Dans les systèmes de type Unix, il existe une commande appelée nm qui renvoie les symboles contenus dans un fichier .so. L'utilisation est nm -g filename.so (vous pouvez trouver plus here).

Je suppose que vous pouvez appeler cette commande avec un exec ou quelque chose comme ça.

Si vous ne pouvez pas utiliser exec, vous aurez besoin de prendre une partie de la commande source code of the nm et l'utiliser dans votre programme

+0

Mais nm listera tous les symboles dans un .so donné. Je cherche seulement quelques fonctions. – ram

+0

Je suppose que vous devez appeler 'nm' et rechercher les symboles que vous voulez de la sortie dans le code C. Sinon, puisque vous exécutez des commandes, vous pouvez utiliser la commande 'grep' pour analyser la sortie de' nm' dans la même commande 'exec'. – Ararararagi

+0

Comment puis-je trouver uniquement les fonctions requises dans la sortie grep? – ram