shared object 파일에서 어떤 symbol들이 export되는지 궁금해지는 경우가 있다.
(특히 unsolved external symbol 따위 linker error가 발생할 경우)
다음과 같이 하면 symbol들을 human-readable한 형태로 뽑아준다.
$ (find . -name '*.a'|xargs nm -f posix; find . -name '*.so' | xargs nm -f posix -D)|cut -f1 -d' '|LANG=C sort -u > all_symbols
$ grep '^_Z' all_symbols | c++filt|sort > demangled_c++_symbols
refs:
http://gcc.gnu.org/wiki/Cxx11AbiCompatibility
http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all-symbols-are-exported-from-a-shared-object
happy hackin'