compile with -fPIC