1 votes

Comment puis-je répertorier les frameworks utilisés par MacOS ?

Apple conserve les frameworks dans /System/Library/Frameworks/ et /System/Library/PrivateFrameworks/. Ces répertoires contiennent des fichiers *.framework, qui sont eux-mêmes un répertoire de ressources informatiques (exécutables binaires, librairies liées dynamiquement, en-têtes, etc.)

Comment puis-je lister les frameworks qui sont actuellement utilisés par le système, c'est-à-dire qui ont un composant chargé dans la mémoire du noyau ou qui sont en cours d'exécution ? Existe-t-il un moyen de comprendre quels frameworks sont nécessaires pour qu'un programme donné, tel qu'un démon ou une application, fonctionne correctement ? Si possible, j'aimerais générer un arbre de dépendance des frameworks pour un programme système choisi arbitrairement.

J'ai essayé de rassembler ces informations auprès de top mais cela ne me renseigne pas sur les bibliothèques chargées dynamiquement, et ne lie pas explicitement un exécutable au répertoire du framework dont il provient.

3voto

Jose Chavez Points 645

Il est à noter que les frameworks peuvent également être placés à n'importe quel autre endroit du système de fichiers - ils ne sont pas limités à ces deux chemins. En particulier, certaines applications auront des frameworks à l'intérieur de leur paquet d'applications.

Votre première question provient d'un malentendu - les frameworks ne sont pas quelque chose qui est utilisé par le noyau, chargé dans la mémoire du noyau, et ainsi de suite. Je pense que vous les confondez avec les extensions du noyau (similaires par exemple aux modules du noyau sous Linux) - qui sont des exécutables chargés dans la mémoire du noyau et utilisés par le noyau lui-même.

Les frameworks sont plutôt utilisés par les programmes de l'espace utilisateur, et ils sont liés à l'espace mémoire de ce programme particulier de l'espace utilisateur. Cela peut se faire de deux manières : soit au démarrage par l'éditeur de liens dynamiques du système ( dyld ), ou cela peut être fait au moment de l'exécution par le programme lui-même.

Dans le premier cas, vous pouvez afficher la liste des cadres qu'un exécutable demande à l'éditeur de liens dynamiques du système de charger pour lui au démarrage, en exécutant une commande comme celle-ci dans le terminal :

otool -L /Applications/Firefox.app/Contents/MacOS/firefox

Dans le second cas, vous devrez surveiller le programme pendant son exécution. Notez que vous ne pouvez pas être sûr d'attraper tous les frameworks utilisés de cette manière, car les frameworks réellement chargés peuvent dépendre de l'entrée du programme. Il n'est pas habituel pour les programmes de fonctionner de cette façon, donc vous serez probablement bien avec l'utilisation de otool pour votre scénario.

Notez qu'un framework peut lui-même dépendre d'un autre framework, vous devrez donc réexécuter otool sur les frameworks listés afin de construire manuellement un graphe de dépendances.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X