J'ai une application qui charge les fichiers .so sous forme de plugins au démarrage, en utilisant dlopen()
Existe-t-il des outils pour vérifier les symboles dans les fichiers .so compilés?
L'environnement de compilation est en cours d'exécution sur le matériel x86, mais l'application est compilée croix pour une autre plate-forme.
Ce serait génial si je pouvais (dans le cadre du processus de construction automatisé) faire une vérification pour s'assurer qu'il n'y a pas de symboles non résolus dans une combinaison des fichiers .so et l'application, sans avoir à réellement déployer l'application. Avant d'écrire un script pour tester les symboles en utilisant la sortie de nm
, je me demande si quelqu'un connaît un utilitaire qui le fait déjà?
modifier 1: Modification de la description un peu - je ne suis pas juste essayer de tester des symboles dans le .donc, mais plutôt dans une combinaison de plusieurs années .so et l'application elle-même - à savoir. après que l'application a chargé tous les .so s'il y aurait toujours des symboles non résolus.
Comme il a été suggéré dans les réponses (merci Martin v. Löwis et tgamblin), nm
identifiera facilement les symboles manquants dans un seul fichier, mais n'identifiera pas facilement lequel de ces symboles a été résolu dans l'un des autres modules chargés .
Peut-être que vous pourriez utiliser ldd récursif pour cela. J'ai ajouté cela à ma réponse ci-dessous. – tgamblin