做成了库的形式，不再提供main函数