The 36-year-old England internationalist, with more than 50 caps, has also played for West Ham, Tottenham, Portsmouth, Toronto and Sunderland.
Ibrox boss Steven Gerrard told the club website: “He is an exceptionally talented striker who has scored goals at every club he has played for. He will be a great addition to our dressing room and we look forward to integrating him into the squad in Tenerife over the next week.”
Rangers have also snapped up their former captain Steven Davis on loan from Southampton until the end of the season. The 34-year-old ex-Aston Villa and Fulham midfielder has been capped 107 times for Northern Ireland.