Compiling wine on an x86-64 system
rob at codeweavers.com
Mon May 29 18:06:54 CDT 2006
Pavel Troller wrote:
> I would like to ask for a help with wine compilation on an x86_64 system.
> Today I successfully did the compilation, but the result is totally unusable.
> I've supplied -m32 switch to both CFLAGS and LDFLAGS (I have to specify my
>own C/LDFLAGS because of custom -I/-L options to find various packages). gcc
>as well as winegcc correctly generated 32bit output.
> There was just one error during compilation - it attempted to compile
>dlls/ntdll/signal_i386.c, which suffered from __NR_sigaction being undefined.
>Because my kernel headers are set up for a 64bit system, there is not such a
>define. __NR_rt_sigaction is defined instead. I'm not sure whether it's ok
>that wine tried to compile this file (it compiled signal_x86_64.c too, with
>no problems). I also don't know how to hack the kernel includes to define it
>correctly (I have just vanilla, unmodified set of native kernel headers for
>2.6.17-rc5 set up). So I hacked it by copying the appropriate #define
>from asm-i386/unistd.h kernel header directly to signal_i386.c.
> wine then compiled and installed without a glitch. However, any attempt to
>run it ends up with immediate return without any diagnosis. It even doesn't
>output its usage help.
> I've already compiled a lot of "normal" programs for 32bit systems on my
>x86_64 system. However, wine resists.
> What am I doing wrong ? What's the correct way ?
There are quite a few places that use i386 syscalls directly and you
just fixed the one place it was detected. What you need to do is to copy
a 32-bit unistd.h to asm-i386/unistd.h and make sure that it is included
correctly by asm/unistd.h.
More information about the wine-devel