Outils pour utilisateurs

Outils du site


debug:librairie

Lecture

Récupérer la liste des symboles dans une librairie

  • Sous Windows :

Liste des symboles exportés.

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /EXPORTS librairie.dll

Liste de tous les symboles, y compris demanglé correctement.

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /UNWINDINFO librairie.dll
  • Sous Linux :
nm -C librairie.so

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 :

nm -C -D librairie.so

Ou :

readelf -Ws --demangle librairie.so

Ou :

objdump -TC librairie.so

Récupérer la liste des dépendances dans une librairie

  • Sous windows :
dumpbin /dependents librairie.dll
  • Sous Linux :
ldd librairie.so

ou

readelf -d librairie.so | grep 'NEEDED'

Modifier

Fusionner des librairies statiques

  • Sous Windows
"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
  • Sous Linux
ar -rc merge.a lib1.lib lib2.lib

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é.

ar -rcT merge.a lib1.lib lib2.lib
ar -rc --thin merge.a lib1.lib lib2.lib
debug/librairie.txt · Dernière modification : 2023/04/26 11:46 de root