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
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
dumpbin /dependents librairie.dll
ldd librairie.so
ou
readelf -d librairie.so | grep 'NEEDED'
"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
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