This page collects information and advice on cross-compiling ROS. This is a work in progress. If you're cross-compiling ROS, please extend and improve this page.
How it Works
Cross-compiling support is implemented globally in the ros via cmake. Whenever you make (or rosmake) your package, the ros will immediately look for the file $ROS_ROOT/rostoolchain.cmake. If it exists, the cmake components will become aware you wish to cross-compile and use that as your toolchain configuration. If you want to create your own $ROS_ROOT/rostoolchain.cmake, look at the example structure (in the comments) in $ROS_ROOT/core/rosbuild/rostoolchain.cmake and also check out the cmake's wiki as a guide.
In most cases however, it will probably be simpler to let eros' tools do the hard work for you.
The eros stack is still experimental, but aims to be a first port of call for cross-compiling with the ros as well as anything in general related to embedded development.
This tutorial explains how to manually cross-compile ros_comm for the pi on an Ubuntu system
Old Case Scenarios
The following are some old (pre-eros) instructions for building on various platforms. Some of the original documents have been moved to the platform guides section in eros. If you wish to contribute your own experiences to the collective, please add to the documentation there.