Le code partagé et les modules chargeables dynamiquement sont tous deux des composants fondamentaux du développement logiciel. Sur macOS, ces entités sont représentées respectivement par les fichiers .so et .dylib. Pourtant, la distinction entre les deux types de fichiers peut être obscure.
Différences conceptuelles
Mach-O (Mach Object) est le format de fichier sous-jacent pour .so et Fichiers .dylib. Cependant, ils appartiennent à différents types de fichiers objets Mach-O. Les fichiers .dylib sont classés comme bibliothèques partagées (MH_DYLIB), tandis que les fichiers .so appartiennent à la catégorie des modules chargés dynamiquement (MH_BUNDLE).
Quand utiliser chaque type
Bibliothèques partagées (.dylib) :
Modules chargés dynamiquement (.so ) :
Techniques de compilation
Dans macOS, le les indicateurs du compilateur pour créer une bibliothèque partagée sont :
-dynamiclib
Pour générer un module chargeable, utilisez ces indicateurs à la place :
-bundle
Contrairement à Linux, où le code partagé peut être utilisé à la fois pour les bibliothèques et le chargement dynamique, macOS sépare strictement ces fonctions.
Évolution historique
Historiquement, la distinction entre les fichiers .so et .dylib était plus prononcée. Dans les premières versions de macOS, les dylibs ne pouvaient être chargés que via des API spécifiques. La prise en charge de dlopen avec dylibs a été introduite progressivement sur plusieurs versions du système d'exploitation.
Considérations supplémentaires
Références :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!