Code that runs on more than one platform.

Differnet people have different ideas about what CrossPlatform means. Most Unix people mean the code will run on other Unix platforms and probably implements/uses POSIX interfaces when they say "CrossPlatform".

Few applications are truly CrossPlatform. Because each platform makes a different set of assumptions, making the union of assumptions in an application requires N^2 implementation effort. Making the intersection leaves you with a painfully low level of functionality. Thus, most applications perform or integrate particularly well or badly on some set of nominally supported platforms.

Writing CrossPlatform GUIs is particularly difficult. Most ToolKits originating on Unix have been ported to many other systems: Tk and GTK are examples. Qt was designed from the very beginning to be CrossPlatform itself, and has ports for MicrosoftWindows and X11. wxWidgets is an attempt to provide a consistent API with binary-compatible binding libraries that allow code to run equally well will any ToolKit that happens to be available.

Java programs, even complex GUI ones like the the Eclipse IDE, tend to be CrossPlatform without much effort. The same is true of programs written in dynamic languages like Perl, Python, Ruby and the like.

The Sysadmin's Rosetta Stone is a very useful web page that lists the comparable commands between any of the major Unix-like operating systems. If you want to do the equivilent of fdisk(8) on Linux, but you're on HP-UX, then the Rosetta Stone can tell you its "lvcreate" or "sam". (Hint: don't use killall on Solaris).