Compiling Wine

How to compile wine, and problems that may arise...

Compiling Wine

Tools required

  • gcc -- 2.7.x required (Wine uses attribute stdcall). Versions earlier than 2.7.2.3 barf on shellord.c -- compile without optimizing for that file. In addition EGCS 1.1.x and GCC 2.95.x are reported to work fine.

  • flex >= 2.5.1 (required for the debugger and wrc, and lex won't do)

  • bison (also required for debugger. Don't know whether BSD yacc would work.)

  • X11 libs and include files

  • Xpm libs and include files

  • texinfo >= 3.11 (optional, to compile the documentation.)

  • autoconf (if you want to remake configure, which is not normally required)

  • XF86DGA extension (optional, detected by configure, needed for DirectX support)

  • Open Sound System (optional, detected by configure, for sound support)

The Red Hat RPMs are gcc-XXX, flex-XXX, XFree86-devel-XXX, xpm-XXX, and xpm-devel, where XXX is the version number.

Space required

You also need about 230 MB of available disk space for compilation. The compiled libwine.so binary takes around 5 MB of disk space, which can be reduced to about 1 MB by stripping ('strip wine'). Stripping is not recommended, however, as you can't submit proper crash reports with a stripped binary any more.

Common problems

If you get a repeatable sig11 compiling shellord.c, thunk.c or other files, try compiling just that file without optimization. Then you should be able to finish the build.

OS specific issues

  • FreeBSD -- In order to run Wine, the FreeBSD kernel needs to be compiled with

    optionsUSER_LDT
    optionsSYSVSHM
    optionsSYSVSEM
    optionsSYSVMSG

    If you need help, read the chapter "Building and Installing a Custom Kernel" in the "FreeBSD handbook. You'll need to be running FreeBSD 3.x or later.

  • SCO Unixware, Openserver -- UW port is supported by SCO.

  • OS/2 -- not a complete port. See Odin for a project which uses some Wine code.

  • Solaris x86 2.x -- Needs GNU toolchain (gcc, gas, flex as above, yacc may work) to compile, seems functional (980215).

  • DGUX, HP, Irix, or other Unixes; non-intel Linux. No ports have been seriously attempted. For non-intel Unixes, only a winelib port is relevant. Alignment may be a problem.

  • Macintosh/Rhapsody/BeOS -- no ports have been attempted.