Author

Topic: Собираем Bitcoin QT из исходников под Windows (Read 7787 times)

kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
1 открываешь файл проекта в креаторе
2. компилируешь.
newbie
Activity: 20
Merit: 0
День добрый. Есть знатоки, кто подскажет, как собрать bitcoin core старых версий в Qt Creator? Перерыл весь инет, толкового мануала не нашел. С меня + Smiley
member
Activity: 95
Merit: 16

Какая древняя тема всплыла. Вот почти с этих вот времён, как для себя настроил сборку биткоина под Windows, так до сих пор и пользуюсь.
Эх, настольгия...  Roll Eyes

Надо будет всё же попробовать это дело - http://qtlinux.narod.ru/make_for_win.htm
Собрал bitcoin-0.17.0 64bit из под Windows 7
Инструкция в текстовом формате, для удобства  Smiley
И... нужно изменить файл configure.ac перед сборкой (с оригинальным он не собирается).
Вот configure.ac https://yadi.sk/d/CALdNjWsbBpqDQ
Если где-то ошибся, сильно не пинайте Smiley
Code:
===
Building headless Bitcoin and Bitcoin-qt on Windows
===
1. Prepare your build system.
I strongly suggest setting up a clean windows virtual machine via Virtualbox or similar.

1.1 Install msys shell:
http[Suspicious link removed]/download
From MinGW installation manager -> All packages -> MSYS
mark the following for installation:

msys-base-bin
msys-autoconf-bin
msys-automake-bin
msys-libtool-bin

then click on Installation -> Apply changes

Make sure no mingw packages are checked for installation or present from a previous install.
Only the above msys packages should be installed. Also make sure that msys-gcc and msys-w32api packages
are not installed.
===
1.2 Install MinGW-builds project toolchain:
64 bit binaries
64 bit binaries can be compiled by using the following toolchain:
Download
http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-posix/seh/x86_64-4.9.2-release-posix-seh-rt_v3-rev1.7z/download
and unpack it to C:\
All dependencies must be rebuilt with the above toolchain.
Openssl should be configured for: mingw64
===
1.3. Ensure that mingw-builds bin folder is set in your PATH environment variable.
On Windows 7 your path should look something like:
C:\mingw64\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
===
1.4 Additional checks:
C:\MinGW\bin should contain nothing but mingw-get.exe.
Your gcc -v output should be:
$ gcc -v
Using built-in specs.
COLLECT_GCC=c:\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev1, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 4.9.2 (i686-posix-dwarf-rev1, Built by MinGW-W64 project)
=====
=====
2. Download, unpack and build required dependencies.
I'll save them in c:\deps folder.
===
2.1 OpenSSL: http://www.openssl.org/source/openssl-1.0.1l.tar.gz
From a MinGw shell (C:\MinGW\msys\1.0\msys.bat), unpack the source archive with tar (this will avoid symlink issues) then configure and make:

cd /c/deps/
tar xvfz openssl-1.0.1l.tar.gz
cd openssl-1.0.1l
./Configure no-zlib no-shared no-dso no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2 no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl2 no-ssl3 mingw64
make

===
2.2 Berkeley DB: http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
We'll use version 4.8 to preserve binary wallet compatibility.
From a MinGW shell unpack the source archive, configure and make:

cd /c/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication
make

===
2.3 Boost: http://sourceforge.net/projects/boost/files/boost/1.57.0/
Download either the zip or the 7z archive, unpack boost inside your C:\deps folder, then bootstrap and compile from a Windows command prompt:
Code:

cd C:\
cd C:\deps\boost_1_57_0\
bootstrap.bat mingw
b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage


This will compile the required boost libraries and put them into the stage folder (C:\deps\boost_1_57_0\stage).
Note: make sure you don't use tarballs, as unix EOL markers can break batch files.
===
2.4 Miniupnpc: http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.20150206.tar.gz
Unpack Miniupnpc to C:\deps, rename containing folder from "miniupnpc-1.9.20150206" to "miniupnpc" then from a Windows command prompt:
Code:

cd C:\deps\miniupnpc
mingw32-make -f Makefile.mingw init upnpc-static

===
2.5 protoc and libprotobuf:
Download https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
Then from msys shell
Code:

cd /c/deps/
tar xvfz protobuf-2.6.1.tar.gz
cd /c/deps/protobuf-2.6.1
configure --disable-shared
make

===
2.6 qrencode:
Download and unpack http://download.sourceforge.net/libpng/libpng-1.6.16.tar.gz inside your deps folder then configure and make:
Code:

cd /c/deps/
tar xvfz libpng-1.6.16.tar.gz
cd /c/deps/libpng-1.6.16
configure --disable-shared
make
cp .libs/libpng16.a .libs/libpng.a

---
Download and unpack http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz inside your deps folder then configure and make:
Code:
cd /c/deps/
tar xvfz qrencode-3.4.4.tar.gz
cd /c/deps/qrencode-3.4.4

LIBS="../libpng-1.6.16/.libs/libpng.a ../../mingw64/x86_64-w64-mingw32/lib/libz.a" \
png_CFLAGS="-I../libpng-1.6.16" \
png_LIBS="-L../libpng-1.6.16/.libs" \
configure --enable-static --disable-shared --without-tools

make

===
2.6.2 Libevent for Bitcoin-0.17.0

cd /c/deps/
tar xvfz libevent-2.0.21-stable.tar.gz
cd /c/deps/libevent-2.0.21-stable
configure
make

===
2.7 Qt 5 libraries:
Qt must be configured with ssl and zlib support.
Download and unpack Qt base and tools sources:
http://download.qt-project.org/official_releases/qt/5.3/5.3.2/submodules/qtbase-opensource-src-5.3.2.7z
http://download.qt-project.org/official_releases/qt/5.3/5.3.2/submodules/qttools-opensource-src-5.3.2.7z
Then from a windows command prompt (note that the following assumes qtbase has been unpacked to C:\Qt\5.3.2 and qttools have been unpacked to C:\Qt\qttools-opensource-src-5.3.2):
Code:

cd C:\

set INCLUDE=C:\deps\libpng-1.6.16;C:\deps\openssl-1.0.1l\include
set LIB=C:\deps\libpng-1.6.16\.libs;C:\deps\openssl-1.0.1l

cd C:\Qt\5.3.2
configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug

mingw32-make

set PATH=%PATH%;C:\Qt\5.3.2\bin

cd C:\Qt\qttools-opensource-src-5.3.2
qmake qttools.pro
mingw32-make

Note: consider using -j switch with mingw32-make to speed up compilation process. On a quad core -j4 or -j5 should give the best results.
===
3. Download and unpack Bitcoin-0.17.0 from https://bitcoincore.org/bin/bitcoin-core-0.17.0/bitcoin-0.17.0.tar.gz
From msys shell configure and make bitcoin:
Code:

cd /c/bitcoin-0.17.0

./autogen.sh

CPPFLAGS="-I/c/deps/db-4.8.30.NC/build_unix \
-I/c/deps/openssl-1.0.1l/include \
-I/c/deps \
-I/c/deps/protobuf-2.6.1/src \
-I/c/deps/libpng-1.6.16 \
-I/c/deps/qrencode-3.4.4 \
-I/c/deps/gmp-6.0.0 \
-I/c/deps/libevent-2.0.21-stable/include" \
LDFLAGS="-L/c/deps/db-4.8.30.NC/build_unix \
-L/c/deps/openssl-1.0.1l \
-L/c/deps/miniupnpc \
-L/c/deps/protobuf-2.6.1/src/.libs \
-L/c/deps/libpng-1.6.16/.libs \
-L/c/deps/qrencode-3.4.4/.libs \
-L/c/deps/gmp-6.0.0/.libs \
-L/c/deps/libevent-2.0.21-stable/.libs" \
BOOST_ROOT=/c/deps/boost_1_57_0 \
./configure \
--disable-upnp-default \
--disable-tests \
--with-qt-incdir=/c/Qt/5.3.2/include \
--with-qt-libdir=/c/Qt/5.3.2/lib \
--with-qt-plugindir=/c/Qt/5.3.2/plugins \
--with-qt-bindir=/c/Qt/5.3.2/bin \
--with-protoc-bindir=/c/deps/protobuf-2.6.1/src

make

strip src/bitcoin-tx.exe
strip src/bitcoin-cli.exe
strip src/bitcoind.exe
cd /c/bitcoin-0.17.0/src/qt
strip bitcoin-qt.exe
cd /c/bitcoin-0.17.0/src/bench/
strip bench_bitcoin.exe

===
end
member
Activity: 252
Merit: 11
👑👑👑👑

Какая древняя тема всплыла. Вот почти с этих вот времён, как для себя настроил сборку биткоина под Windows, так до сих пор и пользуюсь.
Эх, настольгия...  Roll Eyes

Надо будет всё же попробовать это дело - http://qtlinux.narod.ru/make_for_win.htm

А как сделать чтобы не надо было копировать библиотеки?

Чтобы пользователь мог просто скачать экзешник и всё - так возможно?

Мне нужно измененный bitcoin-qt 0.8 для Windows скомпилировать под Ubuntu
legendary
Activity: 3486
Merit: 1100

Какая древняя тема всплыла. Вот почти с этих вот времён, как для себя настроил сборку биткоина под Windows, так до сих пор и пользуюсь.
Эх, настольгия...  Roll Eyes

Надо будет всё же попробовать это дело - http://qtlinux.narod.ru/make_for_win.htm
member
Activity: 252
Merit: 11
👑👑👑👑
Привет всем, я новичок.
Подскажите, можно из под UBUNTU собрать bitcoin.exe для винды конечно же).
Если да, подскажите мануал.

Вот таки да, у меня такая же просьба  Smiley

Весь этот топик честно прочитал и честно ничего не понял  Undecided

Батник из сабжа не подходит, потому что у меня альткоин и на гите его нет, только исходники. А я не настолько во всем этом разбираюсь, чтобы править этот самый батник.
legendary
Activity: 3486
Merit: 1100
а я придрочился у меня mingw32 пересобирает только изменившиеся файлы
даже makefile не пересобираю, тупо корректирую то что мне надо  и make....

компилятор сам видит какие файлы поменялись(по атрибутам) и только их пересобирает
итого даже на атоме компилируется за 1-2 минуты если небольшие правки...

У меня QT 4.8.5 с QT Creator`ром 2.8.0 (пытался чего-нибудь поновее поставить, так всякие ошибки непонятные вылезают...)
Там на кнопочку нажал и тоже самое - пересобирается то что изменилось и за гораздо меньшее время.
У меня в том посте Roll Eyes время полностью всей пересборки - в криеторе есть такая фича.
sr. member
Activity: 460
Merit: 250

Полезная штука - http://qtlinux.narod.ru/parallel_make.htm

раньше виртуалка с XP, 1 ядро, 1 гиг - 0.8.2(?) собирала более 20 мин.
сейчас комп. с W7, 4 ядра, 16 гиг -  0.8.2(?) собирает около 2,5 мин.
а я придрочился у меня mingw32 пересобирает только изменившиеся файлы
даже makefile не пересобираю, тупо корректирую то что мне надо  и make....

компилятор сам видит какие файлы поменялись(по атрибутам) и только их пересобирает
итого даже на атоме компилируется за 1-2 минуты если небольшие правки...

з.ы. LZ, кто потер ссылку на мануал который я сюда вкидывал на 1-й странице?
нормальный же манульчик как говориться "mast heve!"
legendary
Activity: 3486
Merit: 1100

Полезная штука - http://qtlinux.narod.ru/parallel_make.htm

раньше виртуалка с XP, 1 ядро, 1 гиг - 0.8.2(?) собирала более 20 мин.
сейчас комп. с W7, 4 ядра, 16 гиг -  0.8.2(?) собирает около 2,5 мин.
legendary
Activity: 3486
Merit: 1100
Мне тоже в своё время надоело ждать чуть ли не десятками минут когда всё это дело собирается. Особенно после того когда ещё "запятую" не там поставишь или когда работать начинает не так как задумывал, хотя вроде бы всё написано относительно правильно. Методом тыка десяток-другой сборок и считай день коту под хвост и ушёл...

Какой лучше процессор(AMD или Intel), память, винт использовать?
Какое здесь наиболее узкое место, что больше всего тормозит процесс сборки?
sr. member
Activity: 460
Merit: 250

На какой технике быстрее всего разнообразные исходники собираются?

чем больше ядер тем лучше думаю...
в MinGW так и задается  "Note: consider using -j switch with mingw32-make to speed up compilation process. On a quad core -j4 or -j5 should give the best results."

на атоме собирать замучился...
legendary
Activity: 3486
Merit: 1100

На какой технике быстрее всего разнообразные исходники собираются?
sr. member
Activity: 460
Merit: 250
вот отличный ман под mingw32
автор апдейтит
и под 09 и под 08 заточки есть

биткоин 09 собрал
пробую флоринку собрать (лайт)
все работает великолепно
member
Activity: 84
Merit: 10
Подскажите, как собрать исходники из под linux на windows???
legendary
Activity: 3486
Merit: 1100
Потому что из - под винды собирать на винду, такой геммор.

Где то с год назад я в английских разделах находил батнички, с помощью которых чуть ли не одним кликом мышки можно было скачать и установить все необходимые библиотеки и собрать exe-шник с нужными довесками.
Дело в том, что нужно собирать и другие альткоинты.
Так они же все вроде почти одинаковые. В QT-шном "альткоин".pro файле нужные пути добавить да поменять ещё чего-нибудь, если нужно, по аналогии. И всё собирается из кютэ-криетора без проблем.

Но это раньше по крайней мере так было. Что сейчас на самом деле - не знаю. Не до этого сейчас...
member
Activity: 84
Merit: 10
Потому что из - под винды собирать на винду, такой геммор.

Где то с год назад я в английских разделах находил батнички, с помощью которых чуть ли не одним кликом мышки можно было скачать и установить все необходимые библиотеки и собрать exe-шник с нужными довесками.
Дело в том, что нужно собирать и другие альткоинты.
legendary
Activity: 3486
Merit: 1100
Потому что из - под винды собирать на винду, такой геммор.

Где то с год назад я в английских разделах находил батнички, с помощью которых чуть ли не одним кликом мышки можно было скачать и установить все необходимые библиотеки и собрать exe-шник с нужными довесками.
legendary
Activity: 2128
Merit: 1019
Ага, пишите. Тоже почитаю такую тему, интересно.
member
Activity: 84
Merit: 10
Собирать лучше кросс-компиляцией под линуксом, там компиляторы новее чем в этих готовых наборах и сборки получаются шустрее. Впрочем,  при определенном владении бубном можно и под Win32 собрать новым компилятором, но всю среду придется самому собирать.
Привет всем, я новичок.
Подскажите, можно из под UBUNTU собрать bitcoin.exe для винды конечно же).
Если да, подскажите мануал.
Потому что из - под винды собирать на винду, такой геммор.
Спасибо всем заранее
legendary
Activity: 1400
Merit: 1000
Удалось собрать по этим инструкциям и bitcoind.exe и bitcoin-qt.exe  Cool
Завтра буду пробовать собрать Groupcoin (https://github.com/kost/groupcoin), а то нигде не могу найти билдов Groupcoin под Windows  Undecided
legendary
Activity: 3108
Merit: 1358
Интереснее собрать под win32/win64 компилятором от MS (VC10). Но это, очевидно, из области фантастики? Страшно даже представить то необходимое количество возвратно-поступательных движений напильником...
В общем случае собранный майкрософтовским компилятором код действительно довольно быстр (в отдельных случаях едва уступает коду, собранному Intel ICC). Однако, MinGW64 с последними снимками GCC генерирует вполне нормальный код, особенно с -O3 од 64-битную платформу. Но для сборки под Win64 пришлось просеять исходники хорошо, результат в виде дерева исходников адаптированного 0.4.4.4 лежит у меня на github.

Можно собрать c использованием CL.exe, и после небольшого дотачивания надфилем это получалось. Но слинкованный бинарник оказывался нерабочим, надо будет как-нибудь снова заняться этим. Похоже, CL.exe как-то по-своему трактует прагмы.

Меня больше интересует сборка интеловским компилятором, как-нибудь попробую.

P.S. Кстати смех-смехом, но у MS есть основанный на CL тулчейн под Unix-like системы. Но, естественно, он под жестким NDA.  Cheesy Они используют его для сборки своих продуктов под MacOS X, в частности.
legendary
Activity: 1498
Merit: 1021
Was mich nicht umbringt macht mich stärker [F.N.]
Интереснее собрать под win32/win64 компилятором от MS (VC10). Но это, очевидно, из области фантастики? Страшно даже представить то необходимое количество возвратно-поступательных движений напильником...
legendary
Activity: 3108
Merit: 1358
Собирать лучше кросс-компиляцией под линуксом, там компиляторы новее чем в этих готовых наборах и сборки получаются шустрее. Впрочем,  при определенном владении бубном можно и под Win32 собрать новым компилятором, но всю среду придется самому собирать.
legendary
Activity: 1400
Merit: 1000
вот ещё инструкция, вообще без bat файлов но с ссылками на зависимости Smiley
https://bitcointalksearch.org/topic/building-headless-bitcoin-and-bitcoin-qt-on-windows-149479
legendary
Activity: 3108
Merit: 1358
Поглядел, видел и поинтереснее скрипты. Те, что сами все скачивают и собирают... Например:

https://bitcointalksearch.org/topic/automatic-building-windows-bitcoin-client-from-sources-28782

Старый, так что что-то может поломаться, но полностью автоматический.
legendary
Activity: 3108
Merit: 1358
По идее, сабжевые скрипты с незначительными модификациями смогут его собрать.
legendary
Activity: 2294
Merit: 1047
Ок !
Бальтазар! проинструктируй нас как с 0, на машине с голой виндой собрать novacoin клиент
что качаем, ставим, какой батник запускаем
legendary
Activity: 3108
Merit: 1358
Подобные комплекты - это зло, т.к. дают ложное ощущение безопасности. В библиотеках запросто может быть троян подклеен. Так что или официальный билд, или собирать полностью самому, остальное от лукавого.
full member
Activity: 147
Merit: 100
попробую, спасибо.
legendary
Activity: 1400
Merit: 1000
Нашёл недавно тему в английском разделе форума https://bitcointalksearch.org/topic/ann-easywinbuilder-the-easy-way-to-build-bitcoin-on-windows-252931
Скачал, посмотрел, решил написать об этом тут  Smiley
https://github.com/phelixbtc/bitcoin/archive/v0.8.4-EasyWinBuilder-v0.3.zip
Скачиваем исходники, распаковываем, заходим в папку \bitcoin-0.8.4-EasyWinBuilder-v0.3\contrib\easywinbuilder
Запускаем __all_easywinbuilder.bat , читаем инструкции которые выдаёт бат файл и если всё сделано правильно, то получаем рабочий клиент из исходников.

В общем респект phelix и nitrogenetics !!!!!!
Jump to: