Skip to content

Commit 85a6895

Browse files
committed
Merge #19408: doc: Windows WSL build recommendation to temporarily disable Win32 PE support
21a6575 Add Windows WSL build recommendation to temporarily disable Win32 PE support. (Aaron Clauson) Pull request description: This is a solution for the issues described in #17277 and #18348 When cross compiling Bitcoin Code for Windows the `Autoconf` configure scripts attempt to execute Win32 PE files. The configure scripts expect the attempt to fail, however, WSL supports forking the execution of Win32 PE files out to the underlying Windows OS. This can result in the executions failing for unanticipated reasons, which is the case in the two referenced issues. This PR adds an explanatory note and additional instructions to temporarily disable WLS's Win32 support. ACKs for top commit: laanwj: ACK 21a6575 Tree-SHA512: afb014be5a63fa9a827aed30acb2faab15feed34ed89c788a7f6ae6ab1b2238f99e075e6e281d0cc581914db3a4ecc3d5a3d26442f11a520e4e457a40e75e533
2 parents e1b20e2 + 21a6575 commit 85a6895

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

doc/build-windows.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,22 @@ Note that for WSL the Bitcoin Core source path MUST be somewhere in the default
9191
example /usr/src/bitcoin, AND not under /mnt/d/. If this is not the case the dependency autoconf scripts will fail.
9292
This means you cannot use a directory that is located directly on the host Windows file system to perform the build.
9393

94+
Additional WSL Note: WSL support for [launching Win32 applications](https://docs.microsoft.com/en-us/archive/blogs/wsl/windows-and-ubuntu-interoperability#launching-win32-applications-from-within-wsl)
95+
results in `Autoconf` configure scripts being able to execute Windows Portable Executable files. This can cause
96+
unexpected behaviour during the build, such as Win32 error dialogs for missing libraries. The recommended approach
97+
is to temporarily disable WSL support for Win32 applications.
98+
9499
Build using:
95100

96101
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
102+
sudo bash -c "echo 0 > /proc/sys/fs/binfmt_misc/status" # Disable WSL support for Win32 applications.
97103
cd depends
98104
make HOST=x86_64-w64-mingw32
99105
cd ..
100106
./autogen.sh # not required when building from tarball
101107
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
102108
make
109+
sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Enable WSL support for Win32 applications.
103110

104111
## Depends system
105112

0 commit comments

Comments
 (0)