GNU/Linux >> Tutoriels Linux >  >> Linux

dlsym renvoie NULL, même si le symbole existe

Je ne pense pas que tu puisses faire ça, dlsym fonctionne sur les symboles exportés. Parce que vous faites dlsym le NULL (image courante), même si les symboles sont présents dans l'image ELF exécutable, ils ne sont pas exportés (puisqu'il ne s'agit pas d'une bibliothèque partagée).

Pourquoi ne pas l'appeler directement et laisser l'éditeur de liens s'en occuper ? Il ne sert à rien d'utiliser dlsym pour obtenir des symboles de la même image que votre dlsym appel. Si votre testing le symbole était dans une bibliothèque partagée que vous avez liée ou chargée à l'aide de dlopen alors vous pourrez le récupérer.

Je pense qu'il existe également un moyen d'exporter des symboles lors de la création d'exécutables (-Wl,--export-dynamic comme mentionné dans un commentaire de Brandon) mais je ne sais pas pourquoi vous voudriez faire ça.


Linux
  1. Diviser des caractères individuels à l'aide de la chaîne nulle ?

  2. Il ne reste plus d'espace sur l'appareil même s'il y en a ?

  3. Comment rediriger la sortie d'une application en arrière-plan vers /dev/null

  4. Installation PIP incapable de trouver ffi.h même s'il reconnaît libffi

  5. L'exécutable Linux échoue avec le fichier introuvable même si le fichier est là et dans PATH

PyODBC :impossible d'ouvrir le pilote même s'il existe

Virtualenv utilise un mauvais python, même s'il est le premier dans $PATH

Pourquoi le terrible 'rm -rf /' est-il même autorisé ?

Que signifie le symbole du tuyau linux | fais?

l'utilisation de < /dev/null &dans la ligne de commande

/bin/ls introuvable, même s'il existe !