Packaging a program for use on any operating system requires a basic understanding of the necessary libraries and files required to run on that operating system. An example of this would be games which might require direct x 10, and a specific compiler to run on Windows and perhaps not much else.
More often as programs require numerous libraries, developers must struggle to cross compile programs for numerous operating systems or they simply don’t bother.
Due to this fact Wine software was born. 22 years ago it’s humble beginnings held to a virtuous goal of allowing software written for Windows to run natively in Linux. Rather than emulation, the wine software compiles the program down to C to run on the same x86 processor that Windows would have it use and the services that act as the rest of the Windows environment are provided by a Wine Server.
Ultimately many programs written for Windows work exceptionally well in Wine on Linux, however many programs do not for reasons that range from poor configuration by the user, to poor utilization of system services by the program itself.
An example of this can be seen by attempting to run a Windows game written after 2008 in Wine with no customization. Because of this there have been several front ends built to get the most use out of Wine software, particularly for gamers.
Winetricks uses scripting to install commonly used Microsoft DLL’s and similar library dependencies to enable a quicker set up of commonly used program and game dependencies. This sounds similar but it’s actually known to yield wildly different results on a per program basis.
The purpose of this article could be to show software developers exactly how to make sure your software runs on Linux, as well as Windows. But in reality whether we call running in Wine “Linux Compatible” or not, it simply isn’t the same thing as cross compiling to run natively.
Articles related to compiling programs for Linux:
Game developers are starting to appreciate what can be done with open gl graphics, and more games are being ported to Linux on a regular basis. This has come mostly through platforms like Steam and more recently Lutris. However even the biggest companies recognize the value of porting applications to Linux and as such Google Chrome’s browser runs natively, as does Skype, with no Wine software required.
A glimpse into a member of the open source community trying to help, only to find that Google was way ahead of them is available here.
Not that Linux needs every application to run on Linux. Most of the users I know would rather stick to free open source alternatives to expensive commercial software… except actually that isn’t always true.
If anything Linux users have been some of the biggest contributors to crowd sourcing new software for Linux, and in many cases these users have been okay with the idea that the programs they were funding were going to work on every platform.
Many of us (myself included) primarily use the open source alternatives wherever possible.