Outils pour utilisateurs

Outils du site


debug:librairie

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
debug:librairie [2022/09/22 15:29] – Création avec "Récupérer la liste des symboles dans une librairie" rootdebug:librairie [2023/04/26 11:46] (Version actuelle) – Ajout de "Récupérer la liste des dépendances dans une librairie" root
Ligne 1: Ligne 1:
 +====Lecture====
 ===Récupérer la liste des symboles dans une librairie=== ===Récupérer la liste des symboles dans une librairie===
  
Ligne 20: Ligne 21:
 </code> </code>
  
 +Il est important de vérifier l'état de chaque symbole. Si un symbole est ''U'', cela signifie que la librairie l'utilise mais qu'elle est défini dans une autre librairie.
  
 +Si la librairie n'a pas de symboles ou que l'on souhaite n'avoir que les symboles exportées de la librairie dynamique, utiliser l'option :
 +
 +<code bash>
 +nm -C -D librairie.so
 +</code>
 +
 +Ou :
 +
 +<code bash>
 +readelf -Ws --demangle librairie.so
 +</code>
 +
 +Ou :
 +
 +<code bash>
 +objdump -TC librairie.so
 +</code>
 +
 +===Récupérer la liste des dépendances dans une librairie===
 +
 +  * Sous windows :
 +
 +<code bash>
 +dumpbin /dependents librairie.dll
 +</code>
 +
 +  * Sous Linux :
 +
 +<code bash>
 +ldd librairie.so
 +</code>
 +
 +ou
 +
 +<code bash>
 +readelf -d librairie.so | grep 'NEEDED'
 +</code>
 +
 +====Modifier====
 +===Fusionner des librairies statiques===
 +
 +  * Sous Windows
 +
 +<code bash>
 +"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\lib.exe" /OUT:merge.lib lib1.lib lib2.lib
 +</code>
 +
 +  * Sous Linux
 +
 +<code bash>
 +ar -rc merge.a lib1.lib lib2.lib
 +</code>
 +
 +Il est aussi possible de générer une pseudo librairie statique (thin archive). Cette librairie va se comporter comme un sommaire de tous les symboles mais sans contenir le code associé.
 +
 +<code bas>
 +ar -rcT merge.a lib1.lib lib2.lib
 +ar -rc --thin merge.a lib1.lib lib2.lib
 +</code>
debug/librairie.1663853349.txt.gz · Dernière modification : 2022/09/22 15:29 de root