For anything that is more complex than a statically linked hello world, the answer is **probably no**. Without testing it on distribution X, assume the answer *is* no for X. If you want to ship your software in binary form, restrict yourself to - a few popular distributions for the field of use of your software (desktop, server, embedded, ...) - the latest version of each Otherwise you end up with houndreds of distribution of all sizes, versions and ages (ten year old distribution are still in use *and* supported). Test for those. Just a few pointer on what can (and will) go wrong otherwise: - The package of a tool/library you need is named differently across distributions and even versions of the same distribution - The libraries you need are too new or too old (wrong version). Don't assume just because your program can link, it links with the right library. - The same library (file on disk) is differently named on different distributions, making linking impossible - 32bit on 64bit: some non-essential 32bit library is moved into an extra package apart from the 32on64 environment, so you have an extra dependency just for this case. - Shell: don't assume your version of Bash. Don't assume even Bash. - Tools: don't assume some non POSIX command line tool exists anywhere. - Tools: don't assume the tool recognizes an option just because the GNU version of your distro does. - Java: are you really sure your program runs on IBM's JRE as shipped with SLES without testing it? Bonus: - Instruction sets: binary compiled on your machine does not run on older hardware.