X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=doc%2Fcrosscompiling_building%20Windows%20binary%20under%20Unix.txt;h=5c0a38ecbca0a0d140c9e94434040b69b4377e80;hb=373cf9437924e0df8d1899943e6476f33f62e559;hp=86d50c3438a48775483ae019b29c612c6fee6ba0;hpb=4debcd2c0c1d94e257825284c2e522e9102809db;p=novacoin.git diff --git a/doc/crosscompiling_building Windows binary under Unix.txt b/doc/crosscompiling_building Windows binary under Unix.txt index 86d50c3..5c0a38e 100644 --- a/doc/crosscompiling_building Windows binary under Unix.txt +++ b/doc/crosscompiling_building Windows binary under Unix.txt @@ -11,17 +11,18 @@ 2.1) gcc cd /home/<ваше имя>/mxe - make gcc zlib + make gcc zlib libpng Проверка того, что установка gcc прошла успешно: В папке /home/<ваше имя>/mxe/usr/bin должен появиться файл i686-w64-mingw32.static-gcc и i686-w64-mingw32.static-g++ И при запуске ./i686-w64-mingw32.static-gcc -v должно выдаваться ...... Thread model: win32 -gcc version 4.9.2 (GCC) +gcc version 4.9.3 (GCC) -В папке /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib должен быть файл: +В папке /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib должны быть файлы: libz.a +libpng.a 2.2) Openssl @@ -66,91 +67,21 @@ libz.a libdb.a libdb_cxx.a -2.5) Miniupnpc --Скачайте http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.20141128.tar.gz --Распакуйте в домашнюю папку --Переименуйте папку miniupnpc-1.9.20141128 в miniupnpc --Перейдите в папку miniupnpc и создайте файл miniupnpcstrings.h --Напишите в нём: - -#ifndef MINIUPNPCSTRINGS_H_INCLUDED -#define MINIUPNPCSTRINGS_H_INCLUDED - -#define OS_STRING "MSWindows/6.1.7601" -#define MINIUPNPC_VERSION_STRING "1.9" - -#if 0 -/* according to "UPnP Device Architecture 1.0" */ -#define UPNP_VERSION_STRING "UPnP/1.0" -#else -/* according to "UPnP Device Architecture 1.1" */ -#define UPNP_VERSION_STRING "UPnP/1.1" -#endif - -#endif - -и сохраните файл --Откройте файл Makefile.mingw --Измените строку 7: -измените - CC = gcc -на - CC=$(CROSS)gcc - --Удалите строки с 68 по 72 - -wingenminiupnpcstrings: wingenminiupnpcstrings.o - -wingenminiupnpcstrings.o: wingenminiupnpcstrings.c - -miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings - wingenminiupnpcstrings $< $@ - --Сохраните файл - --Откройте терминал - - export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH - make CROSS=i686-w64-mingw32.static- -f Makefile.mingw init upnpc-static - - -Проверка, что установка Miniupnpc прошла успешно: -В папке miniupnpc должен появиться файл libminiupnpc.a - - -2.6) qrencode --Скачайте http://download.sourceforge.net/libpng/libpng-1.6.15.tar.gz?download --Распакуйте в домашнюю папку --Откройте терминал - - export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH - cd /home/<ваше имя>/libpng-1.6.15 - ./configure --host=i686-w64-mingw32.static --disable-shared - make - cp .libs/libpng16.a .libs/libpng.a - -Проверка что libpng собралась успешно: -в папке /home/<ваше имя>/libpng-1.6.15/.libs должен быть файл: -libpng.a - +2.5) qrencode -Скачайте http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz -Распакуйте в домашнюю папку --Откройте терминал +-Откройте терминал: + export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/qrencode-3.4.4 - - LIBS="../libpng-1.6.15/.libs/libpng.a ../mxe/usr/i686-w64-mingw32.static/lib/libz.a" \ - png_CFLAGS="-I../libpng-1.6.15" \ - png_LIBS="-L../libpng-1.6.15/.libs" \ ./configure --host=i686-w64-mingw32.static --enable-static --disable-shared --without-tools - make Проверка что qrencode успешно собралась: в папке /home/<ваше имя>/qrencode-3.4.4/.libs должен быть файл: libqrencode.a -2.7 Qt 5 и Qt 4 +2.6 Qt 5 и Qt 4 Qt 4 -Откройте терминал @@ -166,7 +97,7 @@ Qt 4 -Должно появиться в ответ QMake version 2.01a -Using Qt version 4.8.6 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/qt/lib +Using Qt version 4.8.7 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/qt/lib Qt 5 -Откройте терминал @@ -183,7 +114,7 @@ Qt 5 -Должно появиться в ответ QMake version 3.0 -Using Qt version 5.4.0 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/qt5/lib +Using Qt version 5.5.1 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/qt5/lib 3. Компиляция @@ -198,22 +129,18 @@ Using Qt version 5.4.0 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.stati -Вставьте CC=$(CROSS)gcc CXX=$(CROSS)g++ --Поменяйте USE_UPNP:=0 на USE_UPNP:=1 -Добавьте строчку USE_ASM:=1 -Поменяйте текущие INCLUDEPATHS, LIBPATHS, LIBS на: BOOST_SUFFIX?=-mt +BOOST_THREAD_LIB_SUFFIX?=_win32-mt INCLUDEPATHS= \ -I"$(CURDIR)" \ - -I"/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/include" \ - -I"/home/<ваше имя>/" \ -I"/home/<ваше имя>/db-6.0.20/build_unix" \ LIBPATHS= \ -L"$(CURDIR)/leveldb" \ - -L"/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib" \ - -L"/home/<ваше имя>/miniupnpc" \ -L"/home/<ваше имя>/db-6.0.20/build_unix" \ LIBS= \ @@ -222,14 +149,13 @@ LIBS= \ -l boost_system$(BOOST_SUFFIX) \ -l boost_filesystem$(BOOST_SUFFIX) \ -l boost_program_options$(BOOST_SUFFIX) \ - -l boost_thread$(BOOST_SUFFIX) \ + -l boost_thread$(BOOST_THREAD_LIB_SUFFIX) \ -l boost_chrono$(BOOST_SUFFIX) \ -l db_cxx \ -l ssl \ -l crypto \ - -l z --Поменяйте LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat на -LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static + -l z \ + -l pthread -Поменяйте в последних строчках makefile.mingw g++ -c $(CFLAGS) -o $@ $< @@ -257,19 +183,27 @@ cd leveldb; make; cd .. на cd leveldb; TARGET_OS=NATIVE_WINDOWS make CROSS=i686-w64-mingw32.static- libleveldb.a libmemenv.a; cd .. -Ещё измените -obj/txdb-leveldb.o: leveldb/libleveldb.lib +Если вы хотите использовать BerkeleyDB как базу блоков, то просто удалите строчку USE_LEVELDB:=1 + +Измените +clean: + -del /Q novacoind.exe + -del /Q obj\* + -del /Q crypto\scrypt\asm\obj\* + на -obj/txdb-leveldb.o: leveldb/libleveldb.a -Если вы хотите использовать BerkeleyDB как базу блоков, то просто удалите строчку USE_LEVELDB:=1 +clean: + -rm novacoind.exe + -rm obj/* + -rm crypto/scrypt/asm/obj/* -Сохраните измененный файл makefile.mingw -Откройте терминал cd /home/<ваше имя>/novacoin/src export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH -make CROSS=i686-w64-mingw32.static- -f makefile.mingw +make -j n CROSS=i686-w64-mingw32.static- -f makefile.mingw (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) strip novacoind.exe @@ -285,7 +219,7 @@ libboost_thread_win32-mt.a(thread.o): duplicate section `.rdata$_ZTVN5boost16exc -Откройте терминал и выполните следующие команды: export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin/src/leveldb -TARGET_OS=NATIVE_WINDOWS make CROSS=i686-w64-mingw32.static- libleveldb.a libmemenv.a; +TARGET_OS=NATIVE_WINDOWS make CROSS=i686-w64-mingw32.static- libleveldb.a libmemenv.a -Откройте файл /home/<ваше имя>/novacoin/novacoin-qt.pro в текстовом редакторе(при написании инструкции использовался Pluma 1.8.1) -Ниже @@ -295,14 +229,9 @@ TARGET_OS=NATIVE_WINDOWS make CROSS=i686-w64-mingw32.static- libleveldb.a libmem замените прописанные пути к зависимостям на BOOST_LIB_SUFFIX=-mt -BOOST_INCLUDE_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/include -BOOST_LIB_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib +BOOST_THREAD_LIB_SUFFIX=_win32-mt BDB_INCLUDE_PATH=/home/<ваше имя>/db-6.0.20/build_unix -BDB_LIB_PATH=//home/<ваше имя>/db-6.0.20/build_unix -OPENSSL_INCLUDE_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/include -OPENSSL_LIB_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib -MINIUPNPC_INCLUDE_PATH=/home/<ваше имя>/ -MINIUPNPC_LIB_PATH=/home/<ваше имя>/miniupnpc +BDB_LIB_PATH=/home/<ваше имя>/db-6.0.20/build_unix QRENCODE_INCLUDE_PATH=/home/<ваше имя>/qrencode-3.4.4 QRENCODE_LIB_PATH=/home/<ваше имя>/qrencode-3.4.4/.libs @@ -327,16 +256,6 @@ win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe на win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease -Измените -LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX -на -LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread_win32$$BOOST_THREAD_LIB_SUFFIX - -Измените -windows:LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX -Wl,-Bstatic -lpthread -Wl,-Bdynamic -на -windows:LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX - -Сохраните измененный файл novacoin-qt.pro -Откройте терминал и выполните следующие команды @@ -344,28 +263,28 @@ Qt4 + транзакционный индекс LevelDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt4 "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt4 "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt4 + транзакционный индекс BDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt4 "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt4 "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt5 + транзакционный индекс LevelDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt5 "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt5 "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt5 + транзакционный индекс BDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt5 "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt5 "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) @@ -373,3 +292,14 @@ make -j n -f Makefile.Release (вместо n количество ядер в Во время линковки будут выдаваться подобные сообщения: libboost_thread_win32-mt.a(thread.o): duplicate section `.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_9gregorian9bad_monthEEEEE[__ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_9gregorian9bad_monthEEEEE]' has different size Игнорируйте их. На работоспособность программы это никак не влияет + +Если вы хотите уменьшить размер бинарных файлов, то +1) Перейдите на сайт http://upx.sourceforge.net/#downloadupx +2) Скачайте программу в соответсвии с вашей системой +3) Распакуйте программу в папку с бинарными Novacoin файлами. +4) Введите в терминале +./upx -9 novacoind.exe +затем +./upx -9 novacoin-qt.exe + +И ваши novacoind и novacoin-qt станут меньше ~ в 3 раза.