From ab86273705cd99634bfeabd331c68e9c52f744f6 Mon Sep 17 00:00:00 2001 From: fsb4000 Date: Sun, 26 Oct 2014 23:07:34 +0600 Subject: [PATCH] Windows MinGW building guide --- ...ind and novacoinqt under Windows with MinGW.txt | 295 ++++++++++++++++++++ 1 files changed, 295 insertions(+), 0 deletions(-) create mode 100644 doc/building novacoind and novacoinqt under Windows with MinGW.txt diff --git a/doc/building novacoind and novacoinqt under Windows with MinGW.txt b/doc/building novacoind and novacoinqt under Windows with MinGW.txt new file mode 100644 index 0000000..be7d753 --- /dev/null +++ b/doc/building novacoind and novacoinqt under Windows with MinGW.txt @@ -0,0 +1,295 @@ +1. Подготовка системы. + +1.1 Установка архиватора 7z: http://www.7-zip.org/ +(при написании инструкции использовался 7-Zip 9.20 64 bit X64, но скорее всего подойдёт любая версия) + +1.2 Установка msys shell: +-Скачайте http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download +-нажмите Install +-директория для установки C:\MinGW +-поставить галочку напротив "...also install support for the graphical user interface." +-убрать галочки напротив "..in the start menu, and/or .." "... on the desktop" +-нажмите continue +-нажмите continue +-нажмите All Packages, затем MSYS +-поставте галочки напротив: +msys-autoconf-bin +msys-automake-bin +msys-base-bin +msys-libtool-bin +-нажмите Installation, Apply Changes, Apply. После завершения установки нажмите Close и закройте MinGW Installation Manager. + +1.3 Установка MinGW-builds project toolchain: +Скачайте http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.1/threads-posix/dwarf/i686-4.9.1-release-posix-dwarf-rt_v3-rev1.7z/download +и распакуйте на C:\ + +1.4 Добавте в переменную PATH путь C:\mingw32\bin; +Подробное описание как это сделать на Windows 8, Windows 7, Windows XP и Windows Vista +https://www.java.com/ru/download/help/path.xml +(только не нужно выполнять последний пункт из этой инструкции "Откройте заново окно командной строки и выполните код java." ) + +Проверка что вы всё сделали правильно: +1)C:\MinGW\bin должен содержать только файл mingw-get.exe +2)Откройте Командную строку (Нажмите кнопку Windows + R одновременно. Откроется окно "Выполнить", в поле открыть наберите cmd. Нажмите Ok). Наберите gcc -v. В командной строке выведется текст. В конце текста должно быть написано: +Thread model: posix +gcc version 4.9.1 (i686-posix-dwarf-rev1, Built by MinGW-W64 project) + +2. Построение зависимостей. +В инструкции все зависимости сохраняются в папку c:\deps + +2.1 OpenSSL +-Скачайте http://www.openssl.org/source/openssl-1.0.1j.tar.gz +-Перейдите в папку C:\MinGW\msys\1.0 и запустите msys.bat +Из MinGw shell выполните следующий код: + +cd /c/deps/ +tar xvfz openssl-1.0.1j.tar.gz +cd openssl-1.0.1j +Configure no-shared no-dso mingw +make + +2.2 Berkeley DB +-Скачайте http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz +-Из MinGw shell выполните следующий код: + +cd /c/deps/ +tar xvfz db-6.0.20.tar.gz +cd db-6.0.20/build_unix +../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication +make + +2.3 Boost +-Скачайте http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.7z/download +-Распакуйте boost_1_55_0.7z в папку C:\deps +-Откройте командную строку Windows, и выполните следующий код: + +cd C:\deps\boost_1_55_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 + +2.4 Miniupnpc +-Скачайте http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.20131209.tar.gz +-Распакуйте miniupnpc-1.8.20131209.tar.gz с помощью 7z. (Распаковать нужно 2 раза, нажмите на файле miniupnpc-1.8.20131209.tar.gz левой кнопкой мыши и выберите 7-Zip, затем Распаковать здесь. Появится файл miniupnpc-1.8.20131209.tar. С ним аналогично, левая кнопка мыши -> 7-Zip -> Распаковать здесь. Появится папка miniupnpc-1.8.20131209. Переименуйте её в miniupnpc. +-Откройте командную строку Windows, и выполните следующий код: + +cd C:\deps\miniupnpc +mingw32-make -f Makefile.mingw init upnpc-static + +2.5 qrencode +-Скачайте http://prdownloads.sourceforge.net/libpng/libpng-1.6.12.tar.gz?download +-Распакуйте +-Откройте MinGw shell (C:\MinGW\msys\1.0\msys.bat) и выполните следующий код: + +cd /c/deps/libpng-1.6.12 +configure --disable-shared +make +cp .libs/libpng16.a .libs/libpng.a + +-Скачайте http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz +-Распакуйте +-Выполните следующий код в MinGW shell: + +cd /c/deps/qrencode-3.4.4 + +LIBS="../libpng-1.6.12/.libs/libpng.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \ +png_CFLAGS="-I../libpng-1.6.12" \ +png_LIBS="-L../libpng-1.6.12/.libs" \ +configure --enable-static --disable-shared --without-tools + +make + +2.6 Qt 5 и Qt 4 +Библиотеки Qt будем хранить в папке C:\Qt + +Qt 5: +-Скачайте 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 +-Распакуйте в C:\Qt +-Переименуйте папку qtbase-opensource-src-5.3.2 в 5.3.2 +-Откройте командную строку Windows и выполните следующий код: + +set INCLUDE=C:\deps\libpng-1.6.12;C:\deps\openssl-1.0.1j\include +set LIB=C:\deps\libpng-1.6.12\.libs;C:\deps\openssl-1.0.1j + +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 + + + +Qt4: +-Скачайте http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.zip +-Распакуйте в C:\Qt +-Переименуйте папку qt-everywhere-opensource-src-4.8.6 в 4.8.6 +-Откройте командную строку Windows и выполните следующий код: + +cd C:\Qt\4.8.6 + +configure -release -opensource -confirm-license -static -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg -no-dsp -no-vcproj -no-openssl -no-dbus -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-webkit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -nomake demos -nomake examples + +mingw32-make + + +3. Компиляция +Будем хранить исходники в папке C:\MyProjects + +3.1 Скачиваем исходники +-Зайдите на сайт https://github.com/novacoin-project/novacoin +-Нажмите Download ZIP +-Распакуйте novacoin-master.zip в C:\MyProjects + +3.2 Собираем novacoind +-Перейдите в папку C:\MyProjects\novacoin-master\src +-Откройте файл makefile.mingw в текстовом редакторе.(При написании инструкции использовался WordPad) +-Поменяйте USE_UPNP:=0 на USE_UPNP:=1 +-Поменяйте текущие INCLUDEPATHS, LIBPATHS, LIBS на: + +BOOST_SUFFIX?=-mgw49-mt-s-1_55 + +INCLUDEPATHS= \ + -I"$(CURDIR)" \ + -I"$(CURDIR)/zerocoin" \ + -I"/c/deps/boost_1_55_0" \ + -I"/c/deps" \ + -I"/c/deps/db-6.0.20/build_unix" \ + -I"/c/deps/openssl-1.0.1j/include" + +LIBPATHS= \ + -L"$(CURDIR)/leveldb" \ + -L"/c/deps/boost_1_55_0/stage/lib" \ + -L"/c/deps/miniupnpc" \ + -L"/c/deps/db-6.0.20/build_unix" \ + -L"/c/deps/openssl-1.0.1j" + +LIBS= \ + -l leveldb \ + -l memenv \ + -l boost_system$(BOOST_SUFFIX) \ + -l boost_filesystem$(BOOST_SUFFIX) \ + -l boost_program_options$(BOOST_SUFFIX) \ + -l boost_thread$(BOOST_SUFFIX) \ + -l boost_chrono$(BOOST_SUFFIX) \ + -l db_cxx \ + -l ssl \ + -l crypto + +-Поменяйте LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat на +LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static + +-Если вы хотите использовать LevelDB как базу блоков то добавте в файл MinGW: +USE_LEVELDB:=1 +(ниже USE_IPV6:=1) +Так же измените +cd leveldb; make; cd .. +на +cd leveldb; TARGET_OS=NATIVE_WINDOWS make libleveldb.a libmemenv.a; cd .. + +Ещё измените +obj/txdb-leveldb.o: leveldb/libleveldb.lib +на +obj/txdb-leveldb.o: leveldb/libleveldb.a + +Если вы хотите использовать LevelDB как базу блоков, то просто удалите строчку USE_LEVELDB:=1 + +-Сохраните измененный файл makefile.mingw + +-Откройте MinGW shell (C:\MinGW\msys\1.0\msys.bat) и выполните следующий код: + +cd /c/MyProjects/novacoin-master/src +make -f makefile.mingw +strip novacoind.exe + +(Возможная ошибка: +Fatal error: can't create obj/zerocoin/Accumulator.o: No such file or directory +make: *** [obj/zerocoin/Accumulator.o] Error 1 +Она происходит если нет папки C:\MyProjects\novacoin-master\src\obj\zerocoin . Так что при удалении obj файлов следите, чтобы папка C:\MyProjects\novacoin-master\src\obj\zerocoin не удалилась вместе с obj файлами.) + +Если всё сделано правильно, то файл novacoind.exe будет находится в папке C:\MyProjects\novacoin-master\src + + +3.3 Собираем Novacoin QT + +Внимание: Если вы хотите собирать Novacoin Qt с LevelDB, но пропустили шаг со сборкой novacoind.exe, то +-Откройте MinGW shell (C:\MinGW\msys\1.0\msys.bat) и выполните следующий код: + +cd /c/myprojects/novacoin-master/src/leveldb +TARGET_OS=NATIVE_WINDOWS make libleveldb.a libmemenv.a + +-Откройте файл C:\MyProjects\novacoin-master\novacoin-qt.pro в текстовом редакторе(при написании инструкции использовался WordPad) +-Ниже +# Dependency library locations can be customized with: +# BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH, +# BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively +замените прописанные пути к зависимостям на + +BOOST_LIB_SUFFIX=-mgw49-mt-s-1_55 +BOOST_INCLUDE_PATH=C:/deps/boost_1_55_0 +BOOST_LIB_PATH=C:/deps/boost_1_55_0/stage/lib +BDB_INCLUDE_PATH=C:/deps/db-6.0.20/build_unix +BDB_LIB_PATH=C:/deps/db-6.0.20/build_unix +OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.1j/include +OPENSSL_LIB_PATH=C:/deps/openssl-1.0.1j +MINIUPNPC_INCLUDE_PATH=C:/deps/ +MINIUPNPC_LIB_PATH=C:/deps/miniupnpc +QRENCODE_INCLUDE_PATH=C:/deps/qrencode-3.4.4 +QRENCODE_LIB_PATH=C:/deps/qrencode-3.4.4/.libs + +Так же измените(если ещё не изменено) +LIBS += -lshlwapi +genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a + +на + +LIBS += -lshlwapi +#genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a + +Если в файле нет такой строчки CONFIG += static , то добавте её. + +Измените +win32:QMAKE_LFLAGS........................ +на +win32:QMAKE_LFLAGS *= -Wl,--large-address-aware -static + +-Сохраните измененный файл novacoin-qt.pro +-Откройте командную строку Windows и выполните следующий код: + +Qt5 + база блоков BDB + +set PATH=%PATH%;C:\Qt\5.3.2\bin +cd C:\MyProjects\novacoin-master +qmake "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" novacoin-qt.pro +mingw32-make -f Makefile.Release + + +Qt5 + база блоков LevelDB + +set PATH=%PATH%;C:\Qt\5.3.2\bin +cd C:\MyProjects\novacoin-master +qmake "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" novacoin-qt.pro +mingw32-make -f Makefile.Release + +Qt4 + база блоков BDB + +set PATH=%PATH%;C:\Qt\4.8.6\bin +cd C:\MyProjects\novacoin-master +qmake "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" novacoin-qt.pro +mingw32-make -f Makefile.Release + +Qt4 + база блоков LevelDB + +set PATH=%PATH%;C:\Qt\4.8.6\bin +cd C:\MyProjects\novacoin-master +qmake "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" novacoin-qt.pro +mingw32-make -f Makefile.Release + + + +Если всё сделано правильно, то файл novacoin-qt.exe будет находится в папке C:\MyProjects\novacoin-master\release \ No newline at end of file -- 1.7.1