白而生，少有诗名，梅尧臣称其为太白（李白）后身。皇祐五年（1053年）进士，年仅十九岁，历任官秘书阁校理，任德化（今江西省九江市）县尉，武冈县令权邵州防御判官，改太子中舍，以军功转殿中丞。任桐城知县。元丰四年（1081年），任奉议郎、通判汀州（今福建省长汀县），次年摄守漳州（今福建省漳州市），元丰七年（1084年）因违法被勒停，后官朝请大夫，支持王安石变法，然不为王安石赏识，熙宁十年（1077年）考满，改官签书保信军节度判官厅公事。以国子博士致仕，哲宗元祐三年（1088年）复出知端州（今广东省肇庆市）军州事