查找pthread_join对应的动态库
$ nm -o /lib/*.so | grep 'pthread_join'
nm: /lib/ld-2.11.1.so: no symbols
nm: /lib/libanl-2.11.1.so: no symbols
nm: /lib/libBrokenLocale-2.11.1.so: no symbols
nm: /lib/libc-2.11.1.so: no symbols
nm: /lib/libcidn-2.11.1.so: no symbols
nm: /lib/libcrypt-2.11.1.so: no symbols
nm: /lib/libdl-2.11.1.so: no symbols
nm: /lib/libkeyutils-1.2.so: no symbols
nm: /lib/libm-2.11.1.so: no symbols
nm: /lib/libmemusage.so: no symbols
nm: /lib/libnsl-2.11.1.so: no symbols
nm: /lib/libnss_compat-2.11.1.so: no symbols
nm: /lib/libnss_dns-2.11.1.so: no symbols
nm: /lib/libnss_files-2.11.1.so: no symbols
nm: /lib/libnss_hesiod-2.11.1.so: no symbols
nm: /lib/libnss_nis-2.11.1.so: no symbols
nm: /lib/libnss_nisplus-2.11.1.so: no symbols
nm: /lib/libpcprofile.so: no symbols
nm: /lib/libproc-3.2.8.so: no symbols
/lib/libpthread-2.11.1.so:000068c0 T pthread_join
nm: /lib/libresolv-2.11.1.so: no symbols
nm: /lib/librt-2.11.1.so: no symbols
nm: /lib/libSegFault.so: no symbols
nm: /lib/libthread_db-1.0.so: no symbols
nm: /lib/libutil-2.11.1.so: no symbols
$man nm
"T"
"t" The symbol is in the text (code) section.
"U" The symbol is undefined.
上面就是pthread_join 前边T的意义
查看动态库里边的函数
$nm -D /lib/libpthread.so.0
00000000 A GLIBC_2.0
00000000 A GLIBC_2.1
00000000 A GLIBC_2.1.1
00000000 A GLIBC_2.1.2
00000000 A GLIBC_2.11
00000000 A GLIBC_2.2
00000000 A GLIBC_2.2.3
00000000 A GLIBC_2.2.6
00000000 A GLIBC_2.3.2
00000000 A GLIBC_2.3.3
00000000 A GLIBC_2.3.4
00000000 A GLIBC_2.4
00000000 A GLIBC_PRIVATE
0000df10 T _IO_flockfile
0000df60 T _IO_ftrylockfile
0000dfc0 T _IO_funlockfile
w _Jv_RegisterClasses
U ___tls_get_addr
U __assert_fail
U __clone
0000cbf0 W __close
0000ce00 W __connect
w __cxa_finalize
U __endmntent
0000fad0 T __errno_location
0000ccc0 W __fcntl
0000f240 T __fork
U __fxstat64
U __getdelim
U __getmntent_r
U __getpagesize
U __gettimeofday
0000f200 T __h_errno_location
0000e180 T __libc_allocate_rtsig
U __libc_allocate_rtsig_private
0000e1b0 T __libc_current_sigrtmax
U __libc_current_sigrtmax_private
0000e1d0 T __libc_current_sigrtmin
U __libc_current_sigrtmin_private
U __libc_dl_error_tsd
U __libc_dlclose
U __libc_dlopen_mode
U __libc_dlsym
U __libc_fatal
U __libc_fork
U __libc_longjmp
U __libc_pthread_init
U __libc_stack_end
U __libc_system
U __libc_thread_freeres
0000d1f0 W __lseek
0000d350 W __nanosleep
0000d3d0 W __open
0000d450 W __open64
0000d650 W __pread64
0000e750 T __pthread_cleanup_routine
0000ac70 T __pthread_getspecific
00004430 T __pthread_initialize_minimal
0000ab90 T __pthread_key_create
00007830 T __pthread_mutex_destroy
00007640 T __pthread_mutex_init
00007db0 T __pthread_mutex_lock
00008000 T __pthread_mutex_trylock
00009280 T __pthread_mutex_unlock
000092c0 T __pthread_mutexattr_destroy
000092b0 T __pthread_mutexattr_init
00009350 T __pthread_mutexattr_settype
0000b1b0 T __pthread_once
0000c190 T __pthread_register_cancel
0000c1c0 T __pthread_register_cancel_defer
00009400 T __pthread_rwlock_destroy
00009380 T __pthread_rwlock_init
00009410 T __pthread_rwlock_rdlock
000098a0 T __pthread_rwlock_tryrdlock
00009930 T __pthread_rwlock_trywrlock
000099b0 T __pthread_rwlock_unlock
00009670 T __pthread_rwlock_wrlock