Yes, but there are a few considerations.
(1) The first one that is likely to affect you is file paths. Never use strings to store file paths, as constants. The path separator ("\", "/", ":") is platform dependant. If you use a path data type to store your paths, as constants, then LabVIEW will automatically convert the path separators when it recompiles the application for the new target platform. If you store them as string constants, LabVIEW wont convert them.
(2) If you call shared libraries you need to make sure that you have a .so file in Linux, a .dll file for windows, and a .shlb file for Mac. The call library function will load whichever one it finds if you use a "*" character as the file extension when specifying the library path in your
Call Library Function node. For example, "MySharedLibrary.*".
(3) Don't use ActiveX; it isn't available on Mac, or Linux. LabVIEW's 3D Graph is an ActiveX Control, and won't work outside of Windows. Also, there are some LabVIEW add-on Toolkits, like the Database Connectivity Toolkit, that are windows only because they use ActiveX.
(4) Linux (and Solaris) has Pipes VI, windows doesn't
(5) Only windows has Windows Registry VIs
(6) If you use the Dialog Controls in your application, their appearance will change depending on the platform.
(7) Font problems are notorious, things resize and don�t display right, always. There are several methods of working around this problem, by choosing proper fonts, but none of them are perfect.
(8) You stated that they have the same �hardware and such�. NI doesn�t provide drivers for most of their hardware in platforms other than Windows. Even if drivers exist for Linux, most likely you will need to call different VIs in LabVIEW, t
han you will in Windows.
I am sure that there are a few more issues that I missed, but someone else will post them, no doubt.
Good luck and happy cross-platform wireworking,
-Jim