This is a reasonable (though still rather vague) summary which is consistent with what I think the reason is... Essentially, Linux executables need to use a different set of OS calls to get input/output and system utilities such as memory allocation to Windows executables. Also, I think the way DLLs and Linux libraries work may well be different