2008-09-06 4 views
0

J'ai un projet hérité qui utilise un script de construction (not make) pour construire et lier le projet avec diverses bibliothèques. Lorsque j'effectue une construction, je voudrais analyser la sortie de construction pour déterminer où et où viennent les bibliothèques statiques réelles qui sont liées à l'exécutable final.Existe-t-il un moyen d'analyser une arborescence de dépendances à partir d'une sortie de script de génération?

Le script compile et crée des liens avec les outils GNU.

Répondre

0

Bibliothèques statiques, ce qui rend la vie plus difficile à cet égard. Dans le cas de bibliothèques dynamiques, vous pourriez simplement avoir utilisé ldd sur l'exécutable résultant et avoir terminé avec. Le meilleur pari serait une sorte de fichier de configuration. Vous pouvez également essayer de rechercher les arguments -l dans gcc/ld. Ceux-ci sont utilisés pour spécifier les bibliothèques. Vous pouvez écrire un script pour l'extraire de la sortie, même si je suppose que vous devrez le faire manuellement car au moment où vous savez ce que le script devrait rechercher, vous connaissez probablement déjà la réponse.

0

Il est probablement possible de faire quelque chose d'utile en utilisant par ex. Perl, mais vous devrez fournir plus de détails. D'autre part, il pourrait être plus facile d'analyser simplement le script ...

1

Vous pourriez essayer d'utiliser l'outil nm. Étant donné les bonnes options, il regardera un binaire (archive ou image liée) et vous dira quels objets y ont été liés.

En fait, voici un one-liner j'utiliser au travail:

#!/bin/sh 

nm -Ag $* | sed 's/^.*\/\(.*\.a\):/\1/' | sort -k 3 | grep -v ' U ' 

pour trouver les coupables pour les symboles non définis. Juste couper la dernière expression grep et il devrait vous donner ce que vous voulez.

Questions connexes