J'essaie actuellement de porter une application C vers AIX et je suis confus. Que sont les fichiers .a et .so et comment sont-ils utilisés lors de la création / exécution d'une application?
J'essaie actuellement de porter une application C vers AIX et je suis confus. Que sont les fichiers .a et .so et comment sont-ils utilisés lors de la création / exécution d'une application?
Réponses:
Les bibliothèques d'archives (.a) sont liées statiquement, c'est-à-dire lorsque vous compilez votre programme avec l'option -c dans gcc. Donc, s'il y a un changement dans la bibliothèque, vous devez compiler et reconstruire votre code.
L'avantage de .so (objet partagé) par rapport à une bibliothèque .a est qu'ils sont liés pendant l'exécution, c'est-à-dire après la création de votre option .o file -o dans gcc. Donc, s'il y a un changement dans le fichier .so, vous n'avez pas besoin de recompiler votre programme principal. Mais assurez-vous que votre programme principal est lié au nouveau fichier .so avec la commande ln.
Cela vous aidera à créer les fichiers .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
J'espère que cela t'aides.
pic
(code indépendant de la position)?
.a sont des bibliothèques statiques. Si vous utilisez du code stocké à l'intérieur, il est extrait d'eux et intégré à votre propre binaire. Dans Visual Studio, il s'agirait de fichiers .lib.
.so sont des bibliothèques dynamiques. Si vous utilisez du code stocké à l'intérieur, il n'est pas pris et intégré dans votre propre binaire. Au lieu de cela, il est simplement référencé, donc le binaire dépendra d'eux et le code du fichier so sera ajouté / chargé lors de l'exécution. Dans Visual Studio / Windows, il s'agirait de fichiers .dll (avec de petits fichiers .lib contenant des informations de liaison).
.lib
fichier pour .dll
est appelé une bibliothèque d'importation.
Les fichiers .a sont généralement des bibliothèques qui sont liées statiquement (ou plus précisément des archives), et
.so sont des bibliothèques liées dynamiquement.
Pour faire un port, vous aurez besoin du code source qui a été compilé pour les créer, ou des fichiers équivalents sur votre machine AIX.
Ils sont utilisés dans l'étape de liaison. .a
les fichiers sont liés statiquement et les .so
fichiers sont en quelque sorte liés, de sorte que la bibliothèque est nécessaire chaque fois que vous exécutez l'exe.
Vous pouvez trouver où ils sont stockés en consultant l'un des répertoires lib ... /usr/lib
et en /lib
avoir la plupart, et il y a aussi la LIBRARY_PATH
variable d'environnement.
Wikipédia est une source décente pour ces informations.
Pour en savoir plus sur les fichiers de bibliothèque statiques tels que .a, consultez Librairie statique
Pour en savoir plus sur les fichiers de bibliothèque partagée tels que .so, lisez Library_ (computing) #Shared_libraries Sur cette page, vous trouverez également des informations utiles dans la section Attribution de noms aux fichiers .
a
rchive et d' autres ests
Haredo
bjet