either shared or static library