The 20-year-old recently featured for Scotland at Euro 2020, playing a big role in their goalless draw with England in the second Group D match before missing their 3-1 defeat by Croatia due to a positive COVID-19 test. Scotland finished bottom of their group on one point and were knocked out of the competition.
"I'm very excited to be here," Gilmour, who has three Scotland caps, said in a statement.
"I can't wait for the season ahead. I've been looking forward to coming here, playing as much as possible and helping Norwich City compete in the Premier League."
Norwich won the second-tier Championship last season to earn promotion to the Premier League. They begin their league season at home to Liverpool on Aug. 14.