diff --git a/doc/build-windows.md b/doc/build-windows.md index 50cbd953ed5..f4c0710386a 100644 --- a/doc/build-windows.md +++ b/doc/build-windows.md @@ -31,16 +31,20 @@ To get the bash shell, you must first activate the feature in Windows. * Enable 'Windows Subsystem for Linux' * Click 'OK' and restart if necessary 2. Install Ubuntu - * Open Microsoft Store and search for "Ubuntu 18.04" or use [this link](https://www.microsoft.com/store/productId/9N9TNGVNDL3Q) + * Open Microsoft Store and search for "Ubuntu 20.04" or use [this link](https://apps.microsoft.com/detail/9mttcl66cpxj) * Click Install + * Reboot (if prompted) 3. Complete Installation - * Open a cmd prompt and type "Ubuntu1804" + * Open a cmd prompt and type "Ubuntu2004" * Create a new UNIX user account (this is a separate account from your Windows account) After the bash shell is active, you can follow the instructions below, starting with the "Cross-compilation" section. Compiling the 64-bit version is recommended but it is possible to compile the 32-bit version. +Some people have reported trouble with these steps and recommend that you apply all relevant Windows updates. Also be sure +to enable virtualization in your BIOS if necessary. + Cross-compilation ------------------- @@ -53,29 +57,53 @@ Install the general dependencies. First, ensure your system is updated and has t sudo apt update sudo apt upgrade sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git - + A host toolchain (`build-essential`) is necessary because some dependency packages (such as `protobuf`) need to build host utilities that are used in the build process. +## Get the Source Code + +To build Dogecoin from source code, you'll need the source code. Either check it out via `git` or download +a zip file. (Look at the green "<> Code" button on [the Dogecoin GitHub repository](https://github.com/dogecoin/dogecoin/)). + +Make sure this code is available in your Ubuntu directory. If you've unzipped a single downloaded file, you may need to change +the permissions of all extracted files with command like: + + sudo chmod -R . + +If you've downloaded via `git`, do not use `sudo`. Instead prefer something like: + + cd $HOME + git clone https://github.com/dogecoin/dogecoin.git + git checkout + +... where `` is the name of the branch you want to build, such as +"1.14.7-dev" for the unstable branch or "master" for the most recent stable +release. + ## Building for 64-bit Windows To build executables for Windows 64-bit, install the following dependencies: sudo apt-get install g++-mingw-w64-x86-64 -For Ubuntu 18.04 and 20.04, set the default mingw32 g++ compiler option to posix: +For Ubuntu 20.04, set the default mingw32 g++ compiler option to posix: - sudo update-alternatives --config x86_64-w64-mingw32-g++ + sudo update-alternatives --config x86_64-w64-mingw32-g++ ...Choose the "posix" (vs 'auto' or 'win32') option, and continue. Note that for WSL v1 the Dogecoin Core source path MUST be somewhere in the default mount file system, for -example /usr/src/dogecoin, AND not under, for example, /mnt/d/dogecoin. +example /usr/src/dogecoin, AND not under, for example, /mnt/d/dogecoin. If this is not the case the dependency autoconf scripts will fail (silently.) This means you cannot use a directory that is located directly on the host Windows file system to perform the build. +To identify your version of WSL, run the command: + + wsl -l -v + If using WSL 1, you'll need to turn off WSL Support for Win32 applications temporarily, or you will get ABI errors and format errors for some .o files. If using WSL 1 then build using: @@ -85,27 +113,37 @@ If using WSL 1 then build using: cd depends make HOST=x86_64-w64-mingw32 cd .. - ./autogen.sh + ./autogen.sh # not required when building from release tarball CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/ make sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Re-Enable WSL support for Win32 applications. - + If using WSL 2 then you should be able to build just with: + PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var cd depends make HOST=x86_64-w64-mingw32 cd .. - ./autogen.sh # not required when building from tarball + ./autogen.sh # not required when building from release tarball CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/ make - + +In either case, be aware that if the first `make` invocation fails, you will see further errors during the `./configure` and second `make` stages. Please +report any errors with this in mind. + +Also be careful using the `-j` flag with any `make` command. People have reported strange compilation errors when doing so. + ## Building for 32-bit Windows To build executables for Windows 32-bit, install the following dependencies: - sudo apt-get install g++-mingw-w64-i686 mingw-w64-i686-dev + sudo apt-get install g++-mingw-w64-i686 mingw-w64-i686-dev + +Ensure that this toolchain can build for `posix` (else you may have compilation errors for Dogecoin's dependencies): + + sudo update-alternatives --config i686-w64-mingw32-g++ -Then build using: +Choose the `posix` option (instead of `auto` or `win32`), and continue. Then build using: cd depends make HOST=i686-w64-mingw32 @@ -116,7 +154,7 @@ Then build using: ## Depends system -For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory. +For further documentation on the depends system see [README.md](../depends/README.md) in the `depends/` directory. Installation -------------