J'essaie de compiler une bibliothèque tierce (sous Linux) et je vois qu'elle génère des fichiers libsomething.a J'ai mes autres bibliothèques qui sont des fichiers .so
Mais il semble que même .a est une bibliothèque partagée et peut être utilisé comme une lib .so
Y a-t-il donc une différence entre les deux? ou ils sont identiques avec une convention de dénomination différente.
Mais il semble que même .a soit une bibliothèque partagée
Non, c'est une bibliothèque statique.
et peut être utilisé comme une lib .so
Si vous voulez y faire un lien, alors oui. Mais vous ne pouvez pas dlopen () un fichier .a que vous pourriez faire avec un fichier .so.
Vous pouvez toujours demander à notre vieil ami Oncle G de répondre à vos questions.
UNE .a
le fichier est un bibliothèque statique, tandis qu'un .so
le fichier est un bibliothèque dynamique d'objets partagés similaire à un DLL
sous Windows.
UNE .a
peut inclure en tant que partie d'un programme pendant la compilation & .so
peut importé, tandis qu'un programme se charge.
Lorsque vous établissez un lien avec le *.a
, le code de la bibliothèque est inclus dans l'exécutable lui-même et l'exécutable peut être exécuté sans nécessiter le *.a
fichier présent. Lorsque vous établissez un lien avec le *.so
, ce n'est pas le cas et le *.so
le fichier doit être présent lors de l'exécution.