Jackson, 29, was 10-11 with a 4.03 ERA in 31 starts (189 2/3 innings) with the Washington Nationals in 2012. The Nationals did not make a qualifying offer to Jackson, so they won't get any draft-pick compensation should he leave.
Jackson's deal includes an $8 million signing bonus with annual salaries of $11 million per year, according to a Cubs source.
The Cubs added another right-handed pitcher in Carlos Villanueva, who has agreed to a two-year contract, a major league source told ESPNChicago.com's Bruce Levine. The deal is pending a physical.
Villanueva, 29, was 7-7 with a 4.16 ERA in 38 appearances with the Toronto Blue Jays in 2012, including 16 starts.
After going 12-9 with a 3.79 ERA in 199 2/3 innings for the Chicago White Sox and St. Louis Cardinals in 2011, Jackson wasn't able to get a long-term deal, and settled for $11 million from the Nationals.
Jackson has played for seven teams in his career, which began with the Dodgers in 2003. The 2010 season included his 150-pitch no-hitter with Arizona.
He has a 70-71 career record with a 4.40 ERA. In 2012, Jackson had 168 strikeouts and 58 walks, but also gave up 23 home runs.
Information from ESPN.com's Keith Law and ESPNDallas.com's Richard Durrett was used in this report.