add -fPIC for linux
set hidden visibility as default