Merge #11437: [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04

696ce46 [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
4f890ba Add new step to clean $PATH var by removing /mnt specific Window's %PATH% paths that cause issues with the make system (Donal OConnor)

Pull request description:

  This updates the Windows build documentation with the workaround required to build using Ubuntu 17.04 on WSL, and makes it's explicit that building on Ubuntu 16.04 is broken, and not recommended.

  This includes a commit from @donaloconnor in #11244, and is mostly the investigative work of @laanwj throughout #8732, #8653 and quite a few other issues.

  I tested building on 14.04, 16.04.3 and 17.04 [here](https://github.com/bitcoin/bitcoin/pull/11244#issuecomment-327990251) and got the results we expect.

  ---

  Built master at c22a53cd63 on a Windows 10 VM (Version 1607, OS Build 14393.1593) using WSL with Ubuntu 14.04.
  ![windows](https://user-images.githubusercontent.com/863730/30195033-867f1f24-9489-11e7-932c-e87b8764a627.png)

  Upgraded WSL to 16.04.3, and tried building c22a53cd63 using these instructions. The result is as expected.
  ![ubuntu 16 04 3](https://user-images.githubusercontent.com/863730/30235670-b9bf36bc-953d-11e7-8c1d-4debf7113032.png)

  Upgraded WSL to 17.04 and tried building 3255d6347b using these instructions.
  ![ubuntu 17 04](https://user-images.githubusercontent.com/863730/30235669-b7473434-953d-11e7-8ea3-d05a319ae2d4.png)

  If someone else could also verify that builds are working on both 14.04 and 17.04 with these instructions, that would be great.

Tree-SHA512: 866f1003eb45d208d8ae849504f54fc2f27c32240129d2124ce5a2ee7167bcbf062d29f23b1745123f532ffd0253a8611e719b2a316d1331d3c3924f91e7775d
This commit is contained in:
Wladimir J. van der Laan 2017-10-05 18:05:22 +02:00 committed by Alexander Block
parent 9e3cb7599e
commit 08513bfffd
2 changed files with 25 additions and 9 deletions

View File

@ -46,17 +46,32 @@ $ sudo apt-get install nsis wine-stable wine64 bc
For Windows 64bit, install : For Windows 64bit, install :
```bash ```bash
$ sudo apt-get install g++-mingw-w64-x86-64 $ sudo apt-get install g++-mingw-w64-x86-64
$ # Required to enable C++ threading libraries (e.g. std::thread) ```
$ sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
$ sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix If you're building on Ubuntu 17.04 or later, run these two commands, selecting the 'posix' variant for both,
to work around issues with mingw-w64. See issue [8732](https://github.com/bitcoin/bitcoin/issues/8732) for more information.
This also fixes linker issues related to std::thread and other threading related standard C++ libraries.
```
sudo update-alternatives --config x86_64-w64-mingw32-g++
sudo update-alternatives --config x86_64-w64-mingw32-gcc
``` ```
For Windows 32bit, install: For Windows 32bit, install:
```bash ```bash
$ sudo apt-get install g++-mingw-w64-i686 $ sudo apt-get install g++-mingw-w64-i686
$ # Required to enable C++ threading libraries (e.g. std::thread) ```
$ sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
$ sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix If you're building on Ubuntu 17.04 or later, run these two commands, selecting the 'posix' variant for both,
to fix linker issues related to std::thread and other threading related standard C++ libraries.
```
sudo update-alternatives --config x86_64-w64-mingw32-g++
sudo update-alternatives --config x86_64-w64-mingw32-gcc
```
Before building for Windows 32bit or 64bit, run
```
$ PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
``` ```
When building the dependencies, as described in [build-generic](build-generic.md), use When building the dependencies, as described in [build-generic](build-generic.md), use

View File

@ -4,10 +4,11 @@ WINDOWS BUILD NOTES
Below are some notes on how to build Dash Core for Windows. Below are some notes on how to build Dash Core for Windows.
Most developers use cross-compilation from Ubuntu to build executables for Most developers use cross-compilation from Ubuntu to build executables for
Windows. This is also used to build the release binaries. Windows. Cross-compilation is also used to build the release binaries.
Currently only building on Ubuntu Trusty 14.04 is supported. Currently only building on Ubuntu Trusty 14.04 or Ubuntu Zesty 17.04 or later is supported.
Other versions are unsupported or known to be broken (e.g. Ubuntu Xenial 16.04). Building on Ubuntu Xenial 16.04 is known to be broken, see extensive discussion in issue [8732](https://github.com/bitcoin/bitcoin/issues/8732).
While it may be possible to do so with work arounds, it's potentially dangerous and not recommended.
While there are potentially a number of ways to build on Windows (for example using msys / mingw-w64), While there are potentially a number of ways to build on Windows (for example using msys / mingw-w64),
using the Windows Subsystem For Linux is the most straightforward. If you are building with using the Windows Subsystem For Linux is the most straightforward. If you are building with