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 gets packaged by Debian (since 1.7.35), Fedora, Maemo and openSUSE.
- Good debugger/disassembler support.
- Relay tracing.
- Linux Kernel patched upstream for running Windows RT applications see Bug 31322
- libs/port/interlocked.c: maybe native operations.
- wine-gecko/wine-mono ARM port (waiting for mingw-w64-arm).
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.
Toolchains: Every toolchain with Thumb support should work as we are independent from the crti.o mode since wine-1.5.8
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!.
- patch qemu with the NPTL patch, you must do it manually when using recent qemu, e.g. the one from Alexander Graf
- 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
Wine On Android
This is a work-in-progress presented at FOSDEM2014.
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
Eltechs' ExaGear RPG () allows x86 applications to run on Android using wine.