Software is described as cross-platform if it can be run across different platforms without modification.
Assemby languages were designed to work on particular hardware. Software written for one platform would need to be rewritten to work on another. Compiled languages such as C were designed to get around this. When the code is compiled it is converted into a program that will work on that platform. The same code can then be compiled for many different systems.
When Java came out, one of its major features was that it was cross-platform. it achieves this by using a Virtual machine. This is a piece of software that provides a consistant environment for the code to run in across many different Operating systems. to compete with this Microsoft produced the .NET Framework. Part of this is a Virtual Machine for Microsoft's Operating systems. The Mono project ported this virtual machine to both linux and OS X.