SO A
Conversion de fichier

Convertir SO en A

RÉPONSE RAPIDE
Est-il possible de convertir SO en A ?
Oui - SO se convertit en A.

Compilez les fichiers sources en fichiers objets .o avec GCC ou Clang, puis regroupez-les avec ar rcs libfoo.a *.o. Si la bibliothèque propose un paquet -dev, installez-le avec votre gestionnaire de paquets pour obtenir le .a précompilé sans compiler à partir des sources.

Aussi vers A : O · LIB

Sur cette page

Testé sur macOS, Windows et Linux
Dernière vérification le Oct 2026

Plus de convertisseurs gratuits

HEIC, PNG, WEBP, MP3 et plus - chaque outil ici est gratuit.

Ouvrir la boîte à outils

Pourquoi convertir SO en A ?

Les développeurs remplacent un .so partagé par un .a statique pour produire un binaire autonome qui ne dépend pas de la présence du .so au moment de l'exécution - ce qui est utile lors du déploiement sur des machines où la bibliothèque n'est peut-être pas installée. Un .a est une archive au format ar de fichiers objets compilés, tandis qu'un .so est un objet partagé ELF entièrement lié ; les deux sont construits à partir de la même source à des étapes différentes.

Comment convertir SO en A

ar (binutils) OPEN-SOURCE

Compilez les fichiers sources en fichiers objets (gcc -c -o foo.o foo.c), puis exécutez ar rcs libfoo.a *.o pour les regrouper dans une archive statique .a.

GCC / Clang OPEN-SOURCE

Exécutez ./configure --enable-static && make dans le répertoire source de la bibliothèque pour construire le .a à côté ou à la place du .so.

apt / dnf / pacman FREE

Installez le paquet -dev ou -static de la bibliothèque (par exemple, apt install libfoo-dev) pour obtenir le .a précompilé sans compiler à partir des sources ; les archives statiques sont généralement placées dans /usr/lib/.

À propos de ces formats

Qualité et points de vigilance

  • Un .so utilise du code indépendant de la position (compilé avec -fPIC) ; mélanger des fichiers objets PIC dans un .a lié à un exécutable non-PIE peut parfois provoquer des avertissements de l'éditeur de liens, mais cela fonctionne généralement.
  • Les numéros de version dans les noms de fichiers .so (par exemple, libssl.so.3.0.2) n'ont pas d'équivalent dans le .a - les bibliothèques statiques ne portent pas de SONAME.
  • Si seul le .so final est disponible sans source ni paquet, il n'existe pas de convertisseur binaire - vous devez obtenir ou compiler la bibliothèque statique à partir des sources.

Foire aux questions

Puis-je extraire des fichiers objets d'un `.so` comme je peux le faire d'un `.a` ?
Pas dans le cas général. Les fichiers objets sont fusionnés et modifiés lors de l'édition de liens du .so ; ar x fonctionne sur les archives .a, pas sur les fichiers .so.
Pourquoi utiliser un `.a` au lieu d'un `.so` ?
Un binaire lié statiquement inclut directement le code de la bibliothèque, il s'exécute donc sur des systèmes où le .so n'est pas installé, ce qui simplifie le déploiement dans des environnements minimaux ou isolés.
Où se retrouve le `.a` statique après l'installation d'un paquet `-dev` ?
Généralement dans /usr/lib/x86_64-linux-gnu/libfoo.a sur Debian/Ubuntu, ou le chemin de bibliothèque équivalent sur d'autres distributions.