debug:librairie
Différences
Ci-dessous, les différences entre deux révisions de la page.
| 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" root | debug: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: | ||
| </ | </ | ||
| + | Il est important de vérifier l' | ||
| + | Si la librairie n'a pas de symboles ou que l'on souhaite n' | ||
| + | |||
| + | <code bash> | ||
| + | nm -C -D librairie.so | ||
| + | </ | ||
| + | |||
| + | Ou : | ||
| + | |||
| + | <code bash> | ||
| + | readelf -Ws --demangle librairie.so | ||
| + | </ | ||
| + | |||
| + | Ou : | ||
| + | |||
| + | <code bash> | ||
| + | objdump -TC librairie.so | ||
| + | </ | ||
| + | |||
| + | ===Récupérer la liste des dépendances dans une librairie=== | ||
| + | |||
| + | * Sous windows : | ||
| + | |||
| + | <code bash> | ||
| + | dumpbin /dependents librairie.dll | ||
| + | </ | ||
| + | |||
| + | * Sous Linux : | ||
| + | |||
| + | <code bash> | ||
| + | ldd librairie.so | ||
| + | </ | ||
| + | |||
| + | ou | ||
| + | |||
| + | <code bash> | ||
| + | readelf -d librairie.so | grep ' | ||
| + | </ | ||
| + | |||
| + | ====Modifier==== | ||
| + | ===Fusionner des librairies statiques=== | ||
| + | |||
| + | * Sous Windows | ||
| + | |||
| + | <code bash> | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | * Sous Linux | ||
| + | |||
| + | <code bash> | ||
| + | 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é. | ||
| + | |||
| + | <code bas> | ||
| + | ar -rcT merge.a lib1.lib lib2.lib | ||
| + | ar -rc --thin merge.a lib1.lib lib2.lib | ||
| + | </ | ||
debug/librairie.1663853349.txt.gz · Dernière modification : de root
