Windows apps are mostly compiled for x86 and they won't run on ARM with bare Wine, likewise ARM applications won't run on x86(_64) with bare Wine, so this is not our motivation.
The original Motivation was to be able to run winelib-apps on ARM, that even was before it got public that win8 will run on ARM devices. Meanwhile we support these new ARM PEs for win8!
- Yes, It works! (TM)
- Running win8 ARM PEs also works.
- Already ported Putty to ARM as winelib application.
- First patch was September 18. 2009, final patchset sent September 18. 2010 and they got in Wine-1.3.4
- Wine on ARM already get's packaged by Maemo, Fedora and openSUSE.
- Good debugger/disassembler support.
- Relay tracing.
Linux Kernel patched upstream for running Windows RT applications (Bug 31322).
libs/port/interlocked.c: maybe native operations.
How to help
- Fix compiler warnings.
- Run winetest and report your results.
- Fix test failures or analyse them, see below.
- Report bugs with winelib or Windows RT applications.
- Write tests for missing functions.
wine-1.3.4 - wine-1.5.4
e.g. crosscompiling per Scratchbox (An ARM mode crti.o is expected)
wine-1.5.4 - wine-1.5.7
Use the Linaro toolchain (A Thumb mode crti.o is expected (Bug 30134))
wine-1.5.8 and all later versions
Every toolchain with Thumb support should work as we are independent from the crti.o mode now
Compiling on the ARM Device is recommended:
../configure && make
Anyway here is a crosscompiling example:
../configure --host=arm-linux-gnueabihf host_alias=arm-linux-gnueabihf --with-wine-tools=../path/to/your/native/wine/build && make
Maybe you also should append something like:
CFLAGS="-mcpu=yourcpu -g -O2" LDFLAGS="-mcpu=yourcpu"
Fixme/Todo: Compiling inside a chroot
Running Windows RT Applications
You can find a list of such ported applications at forum.xda-developers.com. To run them you'll need a recent Wine and a Linux Kernel with the tpidrurw patch, it's included since Kernel 3.11-rc1. When you're unsure if the Kernel you are using supports it, you can clone, make and run tpidrurw-test, it'll tell you if your Kernel is suitable.
Running Windows CE Applications
That's still pre-alpha/proof-of-concept and not part of official Wine, don't expect any success. WineCE can be found at github.
Running Windows/x86 Applications
Actually there is a bug in qemu, so it can't work without a patch (qemu-i386-user on ARM host: wine hangs).
This configuration is not supported, but you'll be able to run some Applications. Don't ask for support on winehq.org, but be free to read I got Wine/x86 1.5.11 to run on Linux/ARM with qemu!.
- compile it with
./configure --target-list=i386-linux-user --extra-cflags=-marm && make
- copy Wine/x86 with all needed libraries from your desktop to the corresponding /usr/gnemul/qemu-i386/* folders except wine-preloader (it won't work)
- as root run
echo ':i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/path/to/patched/qemu/i386-linux-user/qemu-i386:' >/proc/sys/fs/binfmt_misc/register echo ':DOSWin:M::MZ::/usr/gnemul/qemu-i386/usr/bin/wine:' >/proc/sys/fs/binfmt_misc/register
- create a wineprefix on your desktop with
WINEARCH=win32 WINEPREFIX=~/.winex86 wine wineboot
- copy it from your desktop to your home folder
- run Wine/x86 with something like /path/to/patched/qemu/i386-linux-user/qemu-i386 /usr/gnemul/qemu-i386/usr/bin/wine winecfg
Remember: This configuration is not supported. Don't ask for support on winehq.org.
Analyzed Test Failures
- softfloat vs. hardfloat
- per dissonant compile time checks the testsuite expects the x86 value for cbWndExtra, whereas the code uses the pointer size
DispCallFunc is not implemented for ARM
There was some experience using Qemu to run the WINE x86 binary under Zaurus's ARM Debian: http://www.oesf.org/forum/index.php?showtopic=14829
Mixed topic, including ARM discussions: http://forum.winehq.org/viewtopic.php?p=67218
Some x86-to-ARM translation strategies were also discussed: http://forum.openhandhelds.org/viewtopic.php?f=16&t=1088
Android running x86 wine and solitaire (by using ubuntu hack and binfmt) : http://forum.xda-developers.com/showthread.php?t=1258506
win86emu is Bochs and DOSBox based and run x86 Applications on Windows RT