How do I find out what all symbols are exported from a shared object?
Solution 1:
Do you have a "shared object" (usually a shared library on AIX), a UNIX shared library, or a Windows DLL? These are all different things, and your question conflates them all :-(
- For an AIX shared object, use
dump -Tv /path/to/foo.o
. - For an ELF shared library, use
readelf -Ws --dyn-syms /path/to/libfoo.so
, or (if you have GNU nm)nm -D /path/to/libfoo.so
. - For a non-ELF UNIX shared library, please state which UNIX you are interested in.
- For a Windows DLL, use
dumpbin /EXPORTS foo.dll
.
Solution 2:
objdump is another good one on linux.
Solution 3:
If it is a Windows DLL file and your OS is Linux then use winedump:
$ winedump -j export pcre.dll
Contents of pcre.dll: 229888 bytes
Exports table:
Name: pcre.dll
Characteristics: 00000000
TimeDateStamp: 53BBA519 Tue Jul 8 10:00:25 2014
Version: 0.00
Ordinal base: 1
# of functions: 31
# of Names: 31
Addresses of functions: 000375C8
Addresses of name ordinals: 000376C0
Addresses of names: 00037644
Entry Pt Ordn Name
0001FDA0 1 pcre_assign_jit_stack
000380B8 2 pcre_callout
00009030 3 pcre_compile
...
Solution 4:
On *nix check nm. On windows use the program Dependency Walker