2010-12-09 134 views
0

J'ai créé un module noyau qui utilise des fonctions au niveau du noyau telles que vfs_read, write etc. Ce module a un makefile qui construit ce module pour obtenir le fichier .ko. Je veux analyser la sortie objdump de ce fichier .ko. Cependant, j'ai observé que les fonctions du noyau telles que vfs_read et write ne sont pas résolues dans le fichier .ko. Ils sont juste appelés et je suppose qu'ils sont résolus au moment de l'exécution. Est-il possible d'apporter des modifications au fichier makefile et de lier statiquement toutes ces fonctions dans le fichier unique .ko uniquement à des fins d'analyse. J'ai essayé d'ajouter de la statique pendant la compilation, mais je n'ai pas aidé. Quelqu'un peut-il suggérer de toute façon de le faire?liaison statique dans le fichier make au niveau du noyau

Répondre

0

S'il vous plaît voir le ld (1) manuel pour ce -static fait:

-static  Do not link against shared libraries.

Depuis un module du noyau ne lie pas contre toutes les bibliothèques partagées (ou une bibliothèque, d'ailleurs), il n'a pas d'effet.

Le noyau résout les références indéfinies au moment du chargement en utilisant son propre "pool de fonctions". Donc le lien n'existe que dans la mémoire, ou quand vous mettez votre code dans le noyau.

+0

est-il possible d'obtenir ces fonctions dans 1 fichier unique? – prap19

+0

Oui, mais vous devez lier dans {les fichiers objet contenant les fonctions}. – user502515