junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -lpthread junyer@whalre:~$ ./foo foo: pthread_rwlock_init(&lock, NULL): 0 foo: pthread_rwlock_wrlock(&lock): 0 foo: pthread_rwlock_unlock(&lock): 0 foo: pthread_rwlock_wrlock(&lock): 0 foo: pthread_rwlock_unlock(&lock): 0 foo: pthread_rwlock_destroy(&lock): 0 junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -static -lpthread junyer@whalre:~$ ./foo foo: pthread_rwlock_init(&lock, NULL): 0 foo: pthread_rwlock_wrlock(&lock): 0 foo: pthread_rwlock_unlock(&lock): 0 ^C junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive junyer@whalre:~$ ./foo foo: pthread_rwlock_init(&lock, NULL): 0 foo: pthread_rwlock_wrlock(&lock): 0 foo: pthread_rwlock_unlock(&lock): 0 foo: pthread_rwlock_wrlock(&lock): 0 foo: pthread_rwlock_unlock(&lock): 0 foo: pthread_rwlock_destroy(&lock): 0 junyer@whalre:~$
junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -lpthread rwlock_ init(&lock, NULL): 0 rwlock_ wrlock( &lock): 0 rwlock_ unlock( &lock): 0 rwlock_ wrlock( &lock): 0 rwlock_ unlock( &lock): 0 rwlock_ destroy( &lock): 0 rwlock_ init(&lock, NULL): 0 rwlock_ wrlock( &lock): 0 rwlock_ unlock( &lock): 0 whole-archive rwlock_ init(&lock, NULL): 0 rwlock_ wrlock( &lock): 0 rwlock_ unlock( &lock): 0 rwlock_ wrlock( &lock): 0 rwlock_ unlock( &lock): 0 rwlock_ destroy( &lock): 0
junyer@whalre:~$ ./foo
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -static -lpthread
junyer@whalre:~$ ./foo
foo: pthread_
foo: pthread_
foo: pthread_
^C
junyer@whalre:~$ g++ -Wall -Werror foo.cc -o foo -static -Wl,--whole-archive -lpthread -Wl,--no-
junyer@whalre:~$ ./foo
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
foo: pthread_
junyer@whalre:~$