LinBox (http://www.linalg.org/) is a C++ template library for exact, high-performance linear algebra computation with dense, sparse, and structured matrices over the integers and over finite fields.
It can solve linear systems, and compute several matrix invariants, such as minimal and characteristic polynomials, rank, determinant, Smith normal form. It can find least-norm, least-squares solutions to singular and inconsistent systems. There is capability for positive-definiteness determination of symmetric integer matrices.
It is released under the GNU LGPL license.