User Tools

Site Tools


mingw32

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

mingw32 [2014/06/18 12:55] zetmingw32 [2024/06/16 11:46] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ===== Необходимый инструментарий ===== ===== Необходимый инструментарий =====
  
-1. **[[http://master.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-windows-x86-mingw482-4.8.6-1.exe|Qt libraries 4.8.6 for Windows (minGW v4.8.2)]]** или скачать с основной [[http://qt-project.org/downloadsтраницы загрузок]] //~330 MB//+1. **[[http://www.cmake.org/|CMake build system]]** -- версию 3.7.2 можно взять [[https://cmake.org/files/v3.7/cmake-3.7.2-win32-x86.msi|здесь]] //~14 MB//
  
-2. **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/MinGW-i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z/download|MinGW v4.8.2]]** //~45 MB//+2. **[[https://github.com/git-for-windows/git/releases|Git for Windows]]** набор утилит для работы с [[http://ru.wikipedia.org/wiki/Git|Git]] //~33 MB//
  
-<del>2. [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/MinGW-gcc-4.4.0-2.7z/download|MinGW-gcc-4.4.0-2]] //~15 MB//</del>+3**[[http://www.openssl.org/source/|OpenSSL]]** -- архив с исходным кодом пакета программ для поддержки шифрования и криптографии (версия > 1.0.0//~MB//
  
-3. **[[http://www.cmake.org/|CMake build system (win32)]]** -- скомпилированную версию 3.0.0 можно взять [[http://www.cmake.org/files/v3.0/cmake-3.0.0-win32-x86.zip|здесь]] //~14 MB//+4. **[[http://www.gnu.org/software/libidn/|GNU IDN Library (LibIDN)]]** -- скомпилированную версию (v1.28) можно взять [[http://ftp.gnu.org/gnu/libidn/libidn-1.28-win32.zip|здесь]]
  
-4. **[[https://github.com/msysgit/msysgit/releases|Git for Windows]]** - набор утилит для работы с [[http://ru.wikipedia.org/wiki/Git|Git]] (из состава [[http://code.google.com/p/msysgit|msysGit]]) //~12 MB//+5. **[[http://www.zlib.net/|Zlib for Windows]]**
  
-5. **[[http://www.openssl.org/source/|OpenSSL]]** -- архив с исходным кодом пакета программ для шифрования и криптографии (версия > 1.0.0), необходим для компиляции OpenSSL //~4 MB// +8. **[[http://gpg4win.org/|GnuPG (Package for Windows)]]** - свежий win32-инсталлятор можно взять [[http://files.gpg4win.org/gpg4win-2.2.1.exe|здесь]]
- +
-6. **[[http://aspell.net/|Aspell Libs for MinGW]]** - библиотеки для обеспечения работы функционала проверки орфографии, необходимые для сборки файлы можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/lyx-windows-deps-mingw-small.zip/download|здесь]] //~0.5 MB// +
- +
-7. **[[http://www.gnu.org/software/libidn/|GNU IDN Library (LibIDN)]]** -- скомпилированную версию (v1.28) можно взять [[http://ftp.gnu.org/gnu/libidn/libidn-1.28-win32.zip|здесь]] или [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/libidn-1.28-win32.zip/download|здесь]] //~0.5 MB// +
- +
-8. **[[http://delta.affinix.com/qconf/|QConf]]** -- утилита конфигурирования проекта перед сборкой (скомпилированную версию можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/qconf1.5-qt4.8.4-win32.7z/download|здесь]]) //~0.1 MB// +
- +
-9. **[[http://www.zlib.net/|Zlib for Windows]]** (скомпилированную версию можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/zlib-1.2.8-win32.7z/download|здесь]]) (v1.2.8) //~0.05 MB// +
- +
-10. **[[http://delta.affinix.com/qca/|Qt Cryptographic Architecture Libs (QCA)]]** (скомпилированную версию можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/QCA-git-20140210-win32.7z/download|здесь]]) //~0.01 MB// +
- +
-11. **[[http://gpg4win.org/|GnuPG (Package for Windows)]]** - свежий win32-инсталлятор можно взять [[http://files.gpg4win.org/gpg4win-2.2.1.exe|здесь]]+
  
 **__Опционально__:** **__Опционально__:**
-  * **[[http://download.tortoisegit.org/tgit/|TortoiseGit]]** надстройка для проводника MS Windows //~20 MB// +  * **[[https://github.com/zdenop/hunspell-mingw|Hunspell for MinGW]]** - библиотека проверки орфографии
-  * <del>**[[http://www.python.org/download/|Python]]** -- только версии 2.x.x (x86) //~15 MB//</del> +
-  * <del>**[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/ccache-3.1-win32.7z/download|ccache version 3.1]]** -- [[http://ru.wikipedia.org/wiki/Ccache|утилита]] для ускорения процесса компиляции //~0.2 MB//</del> +
-      * <del>__**Примечание**__: для нормальной работы **ccache** необходимо прописать переменную **CCACHE_DIR** в переменных окружения.</del>+
  
  
Line 37: Line 22:
  
  
-===== Подготовка к сборке, настройка переменных окружения и необходимых библиотек ===== 
  
-  * Устанавливаем необходимый инструментарий, указанный выше. [[https://github.com/msysgit/msysgit/releases|Git]] рекомендуется устанавливать в корень диска, например, в **C:\Git** 
-  * Создаём в папке **C:\MinGW\bin** новый файл **make.exe** путём копирования и переименования из файла **mingw32-make.exe** **/ВРЕМЕННЫЙ КОСТЫЛЬ/** 
-  * Распаковываем папки **include** и **lib** из архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/lyx-windows-deps-mingw-small.zip/download|lyx-windows-deps-mingw-small.zip]]** в папку **C:\MinGW** 
-  * Распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/zlib-1.2.8-win32.7z/download|zlib-1.2.8-win32.7z]]** в папку **C:\Qt\zlib** 
-  * Распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/libidn-1.28-win32.zip/download|libidn-1.28-win32.zip]]** в папку **C:\Qt\LibIDN** 
-  * Скачиваем и распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/otrplugin-mingw.7z/download|otrplugin-mingw.7z]]** следующим образом: 
-    * содержимое папки **bin** -- в рабочую папку **Psi+** (например, C:\Program Files (x86)\Psi+) 
-    * папки **include** и **lib** -- в папку **C:\MinGW** 
-  * <del>Распаковываем утилиту **ccache.exe** и библиотеку **zlib1.dll** из архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/ccache-3.1-win32.7z/download|ccache-3.1-win32.7z]]** в папку **C:\MinGW\bin**</del> 
-  * <del>Редактируем строки **QMAKE_CC** и **QMAKE_CXX** в файле **C:\Qt\4.8.6\mkspecs\win32-g++\qmake.conf** (дописываем **//ccache//** в следующих строках)</del> 
-<del><code> 
-........ 
-QMAKE_CC = ccache  $${CROSS_COMPILE}gcc 
-........ 
-QMAKE_CXX = ccache $${CROSS_COMPILE}g++ 
-</code></del> 
-  * В свойствах компьютера (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) добавляем необходимые пути в системную переменную [[http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%80%D0%B5%D0%B4%D1%8B_Windows|PATH]] __(при необходимости пути следует заменить на свои)__: 
-<code> 
-C:\>path 
-</code> 
  
-<code> +===== Компиляция OpenSSL Toolkit v1.x.x =====
-PATH=C:\MinGW\bin;C:\Qt\QConf;C:\cmake\bin;C:\Program Files (x86)\GNU\GnuPG\pub +
-</code> +
-А также создаём новые системные переменные __(при необходимости заменив пути на свои)__: +
-<code> +
-GITDIR=C:\Git +
-LIBIDNDIR=C:\Qt\LibIDN +
-MINGWDIR=C:\MinGW +
-OPENSSLDIR=C:\OpenSSL +
-QCADIR=C:\Qt\QCA +
-QCONFDIR=C:\Qt\QConf +
-QMAKESPEC=win32-g++ +
-QTDIR=C:\Qt\4.8.6 +
-ZLIBDIR=C:\Qt\zlib +
-</code>+
  
-**__Примечание 1:__** Переменные обновятся только для вновь запущенных процессов, т.е. требуется перезапустить **cmd** с правами администратора (в крайнем случае - перезагрузить систему).+__**Важно!**__ Данный алгоритм справедлив для версий OpenSSL выше v1.x.x.
  
-**__Примечание 2:__** Если у вас закрыт доступ наружу по порту **9418**, то вы **не сможете** скачать исходный код **Psi** и **Psi+** по протоколу **[[git://]]**. В этом случае рекомендуется в глобальном конфиге **Git** добавить следующий параметр:+  Создаём рабочую папку **C:\build\openssl** 
 +  * Распаковываем архив с исходниками OpenSSL v1.x.x (из **[[http://www.openssl.org/source/|Пункта №5]]** необходимого инструментария) в папку **C:\build\openssl** 
 +  Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.3/Git-2.11.0.3-32-bit.exe|Git]]**) в папке **C:\build\openssl** и последовательно выполняем следующие команды. Сначала конфигурируем проект:
 <code> <code>
-C:\Git\bin\git config --global url."https://".insteadOf git://+MAKE=mingw32-make PERL=perl.exe ./config --prefix=/c/OpenSSL shared
 </code> </code>
  
- +По завершении конфигурации выполняем команду:
- +
- +
-===== Проверка правильной установки и работоспособности Qt на примере сборки тестовой программы ===== +
- +
-  * Запускаем командную строку **cmd.exe** с правами администратора (Start → Run → cmd) +
-  * Проверяем правильность установки путей и переменных командой:+
 <code> <code>
-C:\Qt\4.8.6\bin\qmake -v +mingw32-make 
-</code> +mingw32-make install
-Видим следующее: +
-<code> +
-C:\>C:\Qt\4.8.6\bin\qmake -v +
-QMake version 2.01a +
-Using Qt version 4.8.6 in C:\Qt\4.8.6\lib +
-</code> +
-А также командой: +
-<code> +
-echo %QMAKESPEC% +
-</code> +
-Видим ответ: +
-<code> +
-C:\>echo %QMAKESPEC% +
-win32-g++ +
-</code> +
-  * Меняем рабочую папку на **C:\Qt\4.8.6\examples\tutorials\addressbook\part1** командой: +
-<code> +
-cd C:\Qt\4.8.6\examples\tutorials\addressbook\part1 +
-</code> +
-  * Выполняем команду: +
-<code> +
-C:\Qt\4.8.6\bin\qmake part1.pro +
-</code> +
-  * Затем выполняем команду: +
-<code> +
-mingw32-make -f makefile.release +
-</code> +
-Видим следующее: +
-<code> +
-C:\Qt\4.8.6\examples\tutorials\addressbook\part1>mingw32-make -f makefile.releas +
-+
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL +
--DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M +
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include +
-\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"..\..\..\..\in +
-clude\ActiveQt" -I"release" -I"..\..\..\..\mkspecs\win32-g++" -o release\address +
-book.o addressbook.cpp +
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL +
--DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M +
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include +
-\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"..\..\..\..\in +
-clude\ActiveQt" -I"release" -I"..\..\..\..\mkspecs\win32-g++" -o release\main.o +
-main.cpp +
-C:\Qt\4.8.6\bin\moc.exe -DUNICODE -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_ +
-LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPP +
-ORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui +
-" -I"..\..\..\..\include" -I"..\..\..\..\include\ActiveQt" -I"release" -I"..\..\ +
-..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 addressbook.h -o release\moc_address +
-book.cpp +
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL +
--DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M +
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include +
-\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"..\..\..\..\in +
-clude\ActiveQt" -I"release" -I"..\..\..\..\mkspecs\win32-g++" -o release\moc_add +
-ressbook.o release\moc_addressbook.cpp +
-g++ -Wl,-s -mthreads -Wl,-subsystem,windows -o release\part1.exe release/address +
-book.o release/main.o release/moc_addressbook.o  -L"c:\Qt\4.8.6\lib" -lmingw32 - +
-lqtmain -lQtGui4 -lQtCore4+
 </code> </code>
  
-Результат сборки release-версии тестового приложения в виде исполняемого файла **part1.exe** наблюдаем в папке **C:\Qt\4.8.6\examples\tutorials\addressbook\part1\release**+В результате компиляции и инсталляции пакета **OpenSSL Toolkit v1.x.x** получаем скомпилированные библиотеки **libeay32.dll** и **ssleay32.dll** в папке **C:\OpenSSL\bin**, а также заголовочные файлы в папке **C:\OpenSSL\include\openssl** и служебные библиотеки для линковки в папке **C:\OpenSSL\lib**.
  
-Успешная сборка тестового приложения означает, что Qt правильно установлена и готова к использованию.+Теперь пакет **OpenSSL Toolkit v1.x.x** готов для линковки и сборки Psi+. Временную папку сборки **C:\build\openssl** можно удалить.
  
  
Line 161: Line 49:
  
  
 +===== Компиляция Qt Cryptographic Architecture (QCA) =====
  
- +  Запускаем __от имени Администратора__ **CMD** в рабочей папке **C:\build** 
- +  * Скачиваем исходный код QCA из официального **[[https://github.com/KDE/qca.git|git-репозитория]]**:
-===== Компиляция OpenSSL Toolkit v1.0.x ===== +
- +
-__*ажно!**__ Данный алгоритм справедлив для версий OpenSSL выше v1.0.x. +
- +
-  * Создаём рабочую папку **C:\build\openssl** +
-  * Распаковываем архив с исходниками OpenSSL v1.0.x (из **[[http://www.openssl.org/source/|Пункта №4]]** необходимого инструментария) в папку **C:\build\openssl** +
-  * Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[http://code.google.com/p/msysgit/downloads/list?q=label:Featured|Git]]**) в папке **C:\build\openssl** и последовательно выполняем команды:+
 <code> <code>
-MAKE=mingw32-make PERL=perl.exe ./config --prefix=/c/OpenSSL shared+C:\Git\bin\git clone git://anongit.kde.org/qca.git
 </code> </code>
-Видим следующее:+  * Переходим в папку **C:\build\qca** и конфигурируем проект перед сборкой:
 <code> <code>
-........................... +cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Qt/QCA" -DCMAKE_BUILD_TYPE=Release -DUSE_RELATIVE_PATHS=ON -DBUILD_PLUGINS=ossl;gnupg
-making links in ssl... +
-mingw32-make[1]: Entering directory `c:/build/openssl/ssl' +
-ssl.h => ../include/openssl/ssl.h +
-ssl2.h => ../include/openssl/ssl2.h +
-ssl3.h => ../include/openssl/ssl3.h +
-ssl23.h => ../include/openssl/ssl23.h +
-tls1.h => ../include/openssl/tls1.h +
-dtls1.h => ../include/openssl/dtls1.h +
-kssl.h => ../include/openssl/kssl.h +
-srtp.h => ../include/openssl/srtp.h +
-ssltest.c => ../test/ssltest.c +
-mingw32-make[1]: Leaving directory `c:/build/openssl/ssl' +
-making links in engines... +
-mingw32-make[1]: Entering directory `c:/build/openssl/engines' +
-making links in engines/ccgost... +
-mingw32-make[2]: Entering directory `c:/build/openssl/engines/ccgost' +
-mingw32-make[2]: Nothing to be done for `links'+
-mingw32-make[2]: Leaving directory `c:/build/openssl/engines/ccgost' +
-mingw32-make[1]: Leaving directory `c:/build/openssl/engines' +
-making links in apps... +
-mingw32-make[1]: Entering directory `c:/build/openssl/apps' +
-mingw32-make[1]: Nothing to be done for `links'+
-mingw32-make[1]: Leaving directory `c:/build/openssl/apps' +
-making links in test... +
-mingw32-make[1]: Entering directory `c:/build/openssl/test' +
-mingw32-make[1]: Nothing to be done for `links'+
-mingw32-make[1]: Leaving directory `c:/build/openssl/test' +
-making links in tools... +
-mingw32-make[1]: Entering directory `c:/build/openssl/tools' +
-mingw32-make[1]: Nothing to be done for `links'+
-mingw32-make[1]: Leaving directory `c:/build/openssl/tools' +
-generating dummy tests (if needed)... +
-mingw32-make[1]: Entering directory `c:/build/openssl/test' +
-mingw32-make[1]: Nothing to be done for `generate'+
-mingw32-make[1]: Leaving directory `c:/build/openssl/test' +
- +
-Configured for mingw.+
 </code> </code>
-Далее выполняем команду:+Где "C:/Qt/QCA" - путь по которому будет установлена библиотека QCA (у вас может быть другой) 
 +  * После успешного конфигурирования проекта запускаем сборку командой:
 <code> <code>
 mingw32-make mingw32-make
 </code> </code>
-Видим следующее: +  * Теперь запускаем установку компонентов **QCA** в заданную при конфигурировании папку:
-<code> +
-.................................. +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-gcc -I.. -I../include  -D_WINDLL -DOPENSSL_USE_APPLINK -DOPENSSL_PIC -DOPENSSL_T +
-HREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer - +
-O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_B +
-N_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM +
--DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o igetest.o +
- igetest.c +
-mingw32-make[2]: Entering directory `c:/build/openssl/test' +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-gcc -I.. -I../include  -D_WINDLL -DOPENSSL_USE_APPLINK -DOPENSSL_PIC -DOPENSSL_T +
-HREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer - +
-O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_B +
-N_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM +
--DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o jpaketest +
-.o jpaketest.c +
-mingw32-make[2]: Entering directory `c:/build/openssl/test' +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-gcc -I.. -I../include  -D_WINDLL -DOPENSSL_USE_APPLINK -DOPENSSL_PIC -DOPENSSL_T +
-HREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer - +
-O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_B +
-N_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM +
--DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o srptest.o +
- srptest.c +
-mingw32-make[2]: Entering directory `c:/build/openssl/test' +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-gcc -I.. -I../include  -D_WINDLL -DOPENSSL_USE_APPLINK -DOPENSSL_PIC -DOPENSSL_T +
-HREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer - +
-O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_B +
-N_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM +
--DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o asn1test. +
-o asn1test.c +
-mingw32-make[2]: Entering directory `c:/build/openssl/test' +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-gcc -I.. -I../include  -D_WINDLL -DOPENSSL_USE_APPLINK -DOPENSSL_PIC -DOPENSSL_T +
-HREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer - +
-O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_B +
-N_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM +
--DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o dummytest +
-.o dummytest.c +
-mingw32-make[2]: Entering directory `c:/build/openssl/test' +
-mingw32-make[2]: Leaving directory `c:/build/openssl/test' +
-mingw32-make[1]: Leaving directory `c:/build/openssl/test' +
-making all in tools... +
-mingw32-make[1]: Entering directory `c:/build/openssl/tools' +
-mingw32-make[1]: Nothing to be done for `all'+
-mingw32-make[1]: Leaving directory `c:/build/openssl/tools' +
-</code> +
-__**Примечание**:__ Если при выполнении команды **mingw32-make** получаем ошибку компиляции тестов, то в папке **C:\build\openssl** открываем файл **Makefile**, находим строку+
-<code> +
-build_all: build_libs build_apps build_tests build_tools +
-</code> +
-и удаляем из неё параметр //build_tests//. Далее продолжаем компиляцию командой **mingw32-make**. +
- +
-И в завершении выполняем команду:+
 <code> <code>
 mingw32-make install mingw32-make install
 </code> </code>
-Видим процесс инсталляции: 
-<code> 
-......................................... 
-making install in engines... 
-mingw32-make[1]: Entering directory `c:/build/openssl/engines' 
-installing 4758cca 
-installing aep 
-installing atalla 
-installing cswift 
-installing gmp 
-installing chil 
-installing nuron 
-installing sureware 
-installing ubsec 
-installing padlock 
-installing capi 
-making install in engines/ccgost... 
-mingw32-make[2]: Entering directory `c:/build/openssl/engines/ccgost' 
-[ -n "c:/OpenSSL" ] # should be set by top Makefile... 
-if [ -n "libcrypto.dll.a libssl.dll.a" ]; then \ 
-                set -e; \ 
-                echo installing gost; \ 
-                pfx=lib; \ 
-                if [ "mingw" != "Cygwin" ]; then \ 
-                        case "-I../../include -D_WINDLL -DOPENSSL_USE_APPLINK -D 
-OPENSSL_PIC -DOPENSSL_THREADS -D_MT -DDSO_WIN32 -DL_ENDIAN -DWIN32_LEAN_AND_MEAN 
- -fomit-frame-pointer -O3 -march=i486 -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSS 
-L_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM 
--DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHAS 
-H_ASM" in \ 
-                        *DSO_BEOS*) sfx=".so";; \ 
-                        *DSO_DLFCN*) sfx=`expr ".dll.a" : '.*\(\.[a-z][a-z]*\)' 
-\| ".so"`;; \ 
-                        *DSO_DL*) sfx=".sl";; \ 
-                        *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \ 
-                        *) sfx=".bad";; \ 
-                        esac; \ 
-                        cp ${pfx}gost$sfx c:/OpenSSL/lib/engines/${pfx}gost$sfx. 
-new; \ 
-                else \ 
-                        sfx=".so"; \ 
-                        cp cyggost.dll c:/OpenSSL/lib/engines/${pfx}gost$sfx.new 
-; \ 
-                fi; \ 
-                chmod 555 c:/OpenSSL/lib/engines/${pfx}gost$sfx.new; \ 
-                mv -f c:/OpenSSL/lib/engines/${pfx}gost$sfx.new c:/OpenSSL/lib/e 
-ngines/${pfx}gost$sfx; \ 
-        fi 
-installing gost 
-mingw32-make[2]: Leaving directory `c:/build/openssl/engines/ccgost' 
-mingw32-make[1]: Leaving directory `c:/build/openssl/engines' 
-making install in apps... 
-mingw32-make[1]: Entering directory `c:/build/openssl/apps' 
-installing openssl.exe 
-installing CA.sh 
-installing CA.pl 
-installing tsget 
-mingw32-make[1]: Leaving directory `c:/build/openssl/apps' 
-making install in test... 
-mingw32-make[1]: Entering directory `c:/build/openssl/test' 
-mingw32-make[1]: Nothing to be done for `install'. 
-mingw32-make[1]: Leaving directory `c:/build/openssl/test' 
-making install in tools... 
-mingw32-make[1]: Entering directory `c:/build/openssl/tools' 
-mingw32-make[1]: Leaving directory `c:/build/openssl/tools' 
-installing libcrypto.a 
-installing libssl.a 
-installing libcrypto.dll.a 
-installing libeay32.dll 
-installing libssl.dll.a 
-installing ssleay32.dll 
-mingw32-make[1]: Entering directory `c:/OpenSSL/lib' 
-mingw32-make[2]: Entering directory `c:/OpenSSL/lib' 
-mingw32-make[2]: Nothing to be done for `symlink.cygwin-shared'. 
-mingw32-make[2]: Leaving directory `c:/OpenSSL/lib' 
-mingw32-make[2]: Entering directory `c:/OpenSSL/lib' 
-mingw32-make[2]: Nothing to be done for `symlink.cygwin-shared'. 
-mingw32-make[2]: Leaving directory `c:/OpenSSL/lib' 
-mingw32-make[1]: Leaving directory `c:/OpenSSL/lib' 
-OpenSSL shared libraries have been installed in: 
-  /c/OpenSSL 
  
-If this directory is not in a standard system path for dynamic/shared +  * В каталоге **C:\Qt\QCA** появится полностью собранная библиотека QCA
-libraries, then you will have problems linking and executing +
-applications that use OpenSSL libraries UNLESS:+
  
-you link with static (archive) libraries.  If you are truly +Теперь комплект **QCA** готов для конфигурирования и сборки проекта Psi+.
-  paranoid about security, you should use static libraries. +
-you use the GNU libtool code during linking +
-  (http://www.gnu.org/software/libtool/libtool.html) +
-you use pkg-config during linking (this requires that +
-  PKG_CONFIG_PATH includes the path to the OpenSSL shared +
-  library directory), and make use of -R or -rpath. +
-  (http://www.freedesktop.org/software/pkgconfig/+
-you specify the system-wide link path via a command such +
-  as crle(1) on Solaris systems. +
-* you add the OpenSSL shared library directory to /etc/ld.so.conf +
-  and run ldconfig(8) on Linux systems. +
-* you define the LD_LIBRARY_PATH, LIBPATH, SHLIB_PATH (HP), +
-  DYLD_LIBRARY_PATH (MacOS X) or PATH (Cygwin and DJGPP) +
-  environment variable and add the OpenSSL shared library +
-  directory to it.+
  
-One common tool to check the dynamic dependencies of an executable 
-or dynamic library is ldd(1) on most UNIX systems. 
  
-See any operating system documentation and manpages about shared 
-libraries for your version of UNIX.  The following manpages may be 
-helpful: ld(1), ld.so(1), ld.so.1(1) [Solaris], dld.sl(1) [HP], 
-ldd(1), crle(1) [Solaris], pldd(1) [Solaris], ldconfig(8) [Linux], 
-chatr(1) [HP]. 
-cp libcrypto.pc /c/OpenSSL/lib/pkgconfig 
-chmod 644 /c/OpenSSL/lib/pkgconfig/libcrypto.pc 
-cp libssl.pc /c/OpenSSL/lib/pkgconfig 
-chmod 644 /c/OpenSSL/lib/pkgconfig/libssl.pc 
-cp openssl.pc /c/OpenSSL/lib/pkgconfig 
-chmod 644 /c/OpenSSL/lib/pkgconfig/openssl.pc 
-</code> 
  
-В результате компиляции и инсталляции пакета **OpenSSL Toolkit v1.0.x** получаем скомпилированные библиотеки **libeay32.dll** и **ssleay32.dll** в папке **C:\OpenSSL\bin**, а также заголовочные файлы в папке **C:\OpenSSL\include\openssl** и служебные библиотеки для линковки в папке **C:\OpenSSL\lib**. 
  
-Теперь пакет **OpenSSL Toolkit v1.0.x** готов для линковки и сборки Psi+. Временную папку сборки **C:\build\openssl** можно удалить. 
  
  
  
-===== Компиляция утилиты конфигурирования QConf ===== 
  
-  * Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[https://github.com/msysgit/msysgit/releases|Git]]**) в рабочей папке **C:\build** 
-  * Скачиваем исходный код **[[http://delta.affinix.com/qconf/|QConf]]** командой: 
-<code> 
-git svn clone http://delta.affinix.com/svn/trunk/qconf qconf 
-</code> 
-Или командой: 
-<code> 
-svn export --force http://delta.affinix.com/svn/trunk/qconf qconf 
-</code> 
-Видим следующее: 
-<code> 
-psi@plus /c/build 
-$ svn export --force http://delta.affinix.com/svn/trunk/qconf qconf 
-A    qconf 
-A    qconf\configure 
-A    qconf\configure.exe 
-A    qconf\AUTHORS 
-A    qconf\TODO 
-A    qconf\conf 
-A    qconf\conf\conf4.h 
-A    qconf\conf\conf.pro 
-A    qconf\conf\conf.cpp 
-A    qconf\conf\conf4.pro 
-A    qconf\conf\conf4.cpp 
-A    qconf\qconf.pro 
-A    qconf\src 
-A    qconf\src\stringhelp.cpp 
-A    qconf\src\stringhelp.h 
-A    qconf\src\configexe 
-A    qconf\src\configexe\embed.h 
-A    qconf\src\configexe\configexe_stub.exe 
-A    qconf\src\configexe\configexe.pro 
-A    qconf\src\configexe\configexe.c 
-A    qconf\src\configexe\embed.c 
-A    qconf\src\qconf.cpp 
-A    qconf\src\qconf.qrc 
-A    qconf\COPYING 
-A    qconf\modules 
-A    qconf\modules\qt31.qcm 
-A    qconf\modules\qt41.qcm 
-A    qconf\qconf.qc 
-A    qconf\README 
-A    qconf\examples 
-A    qconf\examples\sampledeps.qc 
-A    qconf\examples\sample.qc 
-A    qconf\examples\samplelib.qc 
-A    qconf\examples\samplecustom.qc 
-Exported revision 816. 
-</code> 
-  * Переходим в папку **C:\build\qconf** (куда только что были скачаны исходники QConf) 
-<code> 
-cd qconf/ 
-</code> 
-  * Выполняем в папке **qconf** команду: 
-<code> 
-./configure.exe --qtdir=C:/Qt/4.8.6 
-</code> 
-Видим следующее: 
-<code> 
-psi@plus /c/build/qconf 
-$ ./configure.exe --qtdir=C:/Qt/4.8.6 
-Configuring QConf ... 
-Verifying Qt 4 build environment ... ok 
  
-Good, your configure finished.  Now run make. 
-</code> 
-  * Далее выполняем команду: 
-<code> 
-mingw32-make -f makefile.release 
-</code> 
-Видим следующее: 
-<code> 
-psi@plus /c/build/qconf 
-$ mingw32-make -f makefile.release 
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL 
--DQT_NO_DEBUG -DQT_XML_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M 
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../Qt/4.8.6/include/QtCore' -I'.. 
-/../Qt/4.8.6/include/QtXml' -I'../../Qt/4.8.6/include' -I'../../Qt/4.8.6/include 
-/ActiveQt' -I'release' -I'../../Qt/4.8.6/mkspecs/win32-g++' -o release/stringhel 
-p.o src/stringhelp.cpp 
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL 
--DQT_NO_DEBUG -DQT_XML_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M 
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../Qt/4.8.6/include/QtCore' -I'.. 
-/../Qt/4.8.6/include/QtXml' -I'../../Qt/4.8.6/include' -I'../../Qt/4.8.6/include 
-/ActiveQt' -I'release' -I'../../Qt/4.8.6/mkspecs/win32-g++' -o release/qconf.o s 
-rc/qconf.cpp 
-c:/Qt/4.8.6/bin/rcc.exe -name qconf src/qconf.qrc -o release/qrc_qconf.cpp 
-g++ -c -pipe -O2 -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL 
--DQT_NO_DEBUG -DQT_XML_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_M 
-MXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../Qt/4.8.6/include/QtCore' -I'.. 
-/../Qt/4.8.6/include/QtXml' -I'../../Qt/4.8.6/include' -I'../../Qt/4.8.6/include 
-/ActiveQt' -I'release' -I'../../Qt/4.8.6/mkspecs/win32-g++' -o release/qrc_qconf 
-.o release/qrc_qconf.cpp 
-g++ -Wl,-s -Wl,-subsystem,console -mthreads -o qconf.exe release/stringhelp.o re 
-lease/qconf.o release/qrc_qconf.o  -L'c:/Qt/4.8.6/lib' -lQtXml4 -lQtCore4 
-</code> 
-  * Копируем из рабочей папки **C:\build\qconf** вложенные папки **conf** и **modules**, а также файл **qconf.exe** во вновь созданную папку назначения **C:\Qt\QConf** 
  
-Теперь утилита конфигурирования **QConf** готова для конфигурирования проекта Psi+. 
  
-Если по каким-либо причинам не получается самостоятельно скомпилировать утилиту **QConf**, то можно воспользоваться уже готовой версией утилиты, распаковав содержимое **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/qconf1.5-qt4.8.4-win32.7z/download|архива]]** в рабочую папку **C:\Qt\QConf**. 
  
-__**ВАЖНО!**__ 
  
-Далее для работы с **QConf** в папке **C:\Qt\QConf** необходимо создать файл **qconf.cmd** следующего вида (в кодировке ANSI или UTF-8 (__без BOM__)):+===== Компиляция zlib ===== 
 + 
 +  * Скачиваем исходный код zlib-1.2.8 **[[http://zlib.net/zlib-1.2.8.tar.gz|отсюда]]** 
 +  * Распаковываем содержимое архива **zlib-1.2.8.tar.gz** во временную рабочую папку **C:\build\zlib** 
 +  * Запускаем __от имени Администратора__ **Git Bash** в папке **C:\build\zlib** 
 +  * Выполняем команду:
 <code> <code>
-@set PATH=%PATH%;%QTDIR%\bin&C:\Qt\QConf\qconf.exe %* +mingw32-make -f win32/Makefile.gcc
-</code> +
-и при конфигурировании проекта вызывать именно его. Например: +
-<code> +
-........ +
-call qconf.cmd +
-........+
 </code> </code>
  
-Временную папку сборки **C:\build\qconf** можно удалить.+В результате компиляции наблюдаем в рабочей папке **C:\build\zlib** готовую к употреблению библиотеку **zlib1.dll**, а также служебные файлы **zconf.h**, **zlib.h**, **libz.a** и **libz.dll.a**
  
 +Копируем из папки **C:\build\zlib** следующие файлы:
 +  * **zlib1.dll** в папку **C:\Qt\zlib\bin**
 +  * **zconf.h** и **zlib.h** в папку **C:\Qt\zlib\include**
 +  * **libz.a** и **libz.dll.a** в папку  **C:\Qt\zlib\lib**
  
 +После этого временную рабочую папку **C:\build\zlib** можно удалить.
  
 +Теперь комплект **zlib** готов для конфигурирования и сборки проекта Psi+.
  
  
Line 535: Line 116:
  
  
-===== Компиляция Qt Cryptographic Architecture (QCA) ===== +===== Компиляция библиотеки Hunspell ===== 
- +  * Скачиваем при помощи Git исходники из [[https://github.com/zdenop/hunspell-mingw|github репозитория]]:
-  * Запускаем __от имени Администратора__ **CMD** в рабочей папке **C:\build** +
-  * Скачиваем исходный код QCA из официального **[[http://quickgit.kde.org/?p=qca.git|git-репозитория]]**:+
 <code> <code>
-git clone git://anongit.kde.org/qca.git+C:\Git\bin\git clone https://github.com/zdenop/hunspell-mingw.git
 </code> </code>
-Видим процесс скачивания:+  * Переходим в каталог исходников
 <code> <code>
-$ git clone git://anongit.kde.org/qca.git +cd hunspell-mingw
-Cloning into 'qca'... +
-remote: Counting objects: 14036, done. +
-remote: Compressing objects: 100% (5391/5391), done. +
-remote: Total 14036 (delta 8820), reused 13132 (delta 8167) +
-Receiving objects: 100% (14036/14036), 18.19 MiB | 5.00 MiB/s, done. +
-Resolving deltas: 100% (8820/8820), done. +
-Checking connectivity... done. +
-Checking out files: 100% (467/467), done.+
 </code> </code>
-  * Переходим в папку **C:\build\qca** и конфигурируем проект перед сборкой:+  * Создаем каталог для теневой сборки и переходим в него:
 <code> <code>
-cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%QCADIR% -DCMAKE_BUILD_TYPE=Release -DBUILD_PLUGINS=ossl;gnupg+mkdir build 
 +cd build
 </code> </code>
-Видим следующее:+  * Выполняем конфигурацию исходников:
 <code> <code>
-C:\build\qca>cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%QCADIR% -DCMAKE_ +cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Hunspell" .. 
-BUILD_TYPE=Release -DBUILD_PLUGINS=ossl;gnupg +</code> 
--- Could NOT find Doxygen (missing DOXYGEN_EXECUTABLE) +Где C:/Hunspell путь куда будет установлена библиотека libhunspell после сборки
--- Checking for certstore.. +
--- Using built in certstore. +
--- certstore path: C:/build/qca/certs/rootcerts.pem +
--- mlock(2) does not take a void * +
-CMake Warning at plugins/qca-ossl/CMakeLists.txt:18 (message): +
-  qca-ossl will be compiled without MD2 digest algorithm support+
  
-Plugins: +  Если конфигурация прошла успешно, запускаем сборку библиотеки и установку:
-  qca-botan off +
-  qca-cyrus-sasl off +
-  qca-gcrypt off +
-  qca-gnupg on +
-  qca-logger off +
-  qca-nss off +
-  qca-ossl on +
-  qca-pkcs11 off +
-  qca-softstore off +
- +
-QCA prefix is C:/Qt/QCA +
-Plugins will be installed to C:/Qt/QCA/lib/qca/crypto +
-Binary will be installed to C:/Qt/QCA/bin +
-Library will be installed to C:/Qt/QCA/lib +
-Feature file will be installed to C:/Qt/QCA/mkspecs/features +
-Public headers will be installed to C:/Qt/QCA/include +
-Private headers will be installed to C:/Qt/QCA/include +
-Documentation will be installed to C:/Qt/QCA/share/doc/qca/html +
-Man page will be installed to C:/Qt/QCA/share/man +
-Pkg-config file will be installed to C:/Qt/QCA/lib/pkgconfig +
- +
--- Configuring done +
--- Generating done +
--- Build files have been written to: C:/build/qca +
-</code> +
-  После успешного конфигурирования проекта запускаем сборку командой:+
 <code> <code>
 mingw32-make mingw32-make
-</code> 
-Видим процесс компиляции: 
-<code> 
-................................ 
-[ 95%] Generating ssltest.moc 
-Scanning dependencies of target ssltest 
-[ 95%] Building CXX object examples/ssltest/CMakeFiles/ssltest.dir/ssltest.cpp.o 
-bj 
-Linking CXX executable ..\..\bin\ssltest.exe 
-[ 95%] Built target ssltest 
-[ 95%] Generating sslservtest.moc 
-Scanning dependencies of target sslservtest 
-[ 96%] Building CXX object examples/sslservtest/CMakeFiles/sslservtest.dir/sslse 
-rvtest.cpp.obj 
-Linking CXX executable ..\..\bin\sslservtest.exe 
-[ 96%] Built target sslservtest 
-[ 97%] Generating tlssocket.moc 
-Scanning dependencies of target tlssocket 
-[ 98%] Building CXX object examples/tlssocket/CMakeFiles/tlssocket.dir/tlssocket 
-.cpp.obj 
-[ 98%] Building CXX object examples/tlssocket/CMakeFiles/tlssocket.dir/main.cpp. 
-obj 
-Linking CXX executable ..\..\bin\tlssocket.exe 
-[ 98%] Built target tlssocket 
-Scanning dependencies of target mozcerts 
-[ 99%] Building CXX object tools/mozcerts/CMakeFiles/mozcerts.dir/main.cpp.obj 
-Linking CXX executable ..\..\bin\mozcerts.exe 
-[ 99%] Built target mozcerts 
-[100%] Generating main.moc 
-Scanning dependencies of target qcatool 
-[100%] Building CXX object tools/qcatool/CMakeFiles/qcatool.dir/main.cpp.obj 
-Linking CXX executable ..\..\bin\qcatool.exe 
-[100%] Built target qcatool 
-</code> 
-  * Теперь запускаем установку компонентов **QCA** в заданную при конфигурировании папку: 
-<code> 
 mingw32-make install mingw32-make install
 </code> </code>
-Видим процесс установки: 
-<code> 
-................................ 
-[ 95%] Built target ssltest 
-[ 96%] Built target sslservtest 
-[ 98%] Built target tlssocket 
-[ 99%] Built target mozcerts 
-[100%] Built target qcatool 
-Install the project... 
--- Install configuration: "Release" 
--- Installing: C:/Qt/QCA/certs/rootcerts.pem 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qcaprovider.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/QtCrypto 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_export.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_support.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_tools.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_core.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_textfilter.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_basic.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_publickey.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_cert.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_keystore.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_securelayer.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_securemessage.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qca_version.h 
--- Installing: C:/Qt/QCA/include/QtCrypto/qpipe.h 
--- Installing: C:/Qt/QCA/mkspecs/features/crypto.prf 
--- Installing: C:/Qt/QCA/share/man/man1/qcatool.1 
--- Installing: C:/Qt/QCA/lib/libqca.dll.a 
--- Installing: C:/Qt/QCA/bin/libqca.dll 
--- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-gnupg.dll 
--- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-ossl.dll 
--- Installing: C:/Qt/QCA/bin/mozcerts.exe 
--- Installing: C:/Qt/QCA/bin/qcatool.exe 
-</code> 
-<del>  * Копируем из рабочей папки **C:\build\qca** файл **crypto.prf** в папку **C:\Qt\4.8.5\mkspecs\features**</del> 
  
-Теперь комплект **QCA** готов для конфигурирования и сборки проекта Pi+.+Если сборка прошла успешното по адресу C:\Hunspell будет установлена библиотека libhunspell
  
-Если по каким-либо причинам не получается самостоятельно скомпилировать **QCA**, то можно воспользоваться уже готовой версией, распаковав содержимое **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/qca-2.0.3-win32.7z/download|архива]]** в рабочую папку **C:\Qt\QCA**. 
  
  
Line 684: Line 150:
  
  
 +===== Способ сборки Psi+ при помощи кросс-компиляции из OS Linux (рекомендовано) =====
  
 +==== Настройка и сборка окружения для кросс-компиляции MXE ====
  
 +  * Инструкция по скачиванию доступна на официальном сайте проекта [[https://mxe.cc/#download|https://mxe.cc/#download]]
  
- +<code bash
- +cd ~ 
- +mkdir -p github 
-===== Компиляция zlib ===== +cd ~/github 
- +git clone https://github.com/mxe/mxe.git 
-  * Скачиваем исходный код zlib-1.2.8 **[[http://zlib.net/zlib-1.2.8.tar.gz|отсюда]]** +cd mxe
-  * Распаковываем содержимое архива **zlib-1.2.8.tar.gz** во временную рабочую папку **C:\build\zlib** +
-  * Запускаем __от имени Администратора__ **Git Bash** в папке **C:\build\zlib** +
-  * Выполняем команду: +
-<code> +
-mingw32-make -f win32/Makefile.gcc +
-</code> +
-Видим процесс компиляции: +
-<code> +
-$ mingw32-make -f win32/Makefile.gcc +
-gcc  -O3 -Wall -c -o adler32.o adler32.c +
-gcc  -O3 -Wall -c -o compress.o compress.c +
-gcc  -O3 -Wall -c -o crc32.o crc32.c +
-gcc  -O3 -Wall -c -o deflate.o deflate.c +
-gcc  -O3 -Wall -c -o gzclose.o gzclose.c +
-gcc  -O3 -Wall -c -o gzlib.o gzlib.c +
-gcc  -O3 -Wall -c -o gzread.o gzread.c +
-gcc  -O3 -Wall -c -o gzwrite.o gzwrite.c +
-gcc  -O3 -Wall -c -o infback.o infback.c +
-gcc  -O3 -Wall -c -o inffast.o inffast.c +
-gcc  -O3 -Wall -c -o inflate.o inflate.c +
-gcc  -O3 -Wall -c -o inftrees.o inftrees.c +
-gcc  -O3 -Wall -c -o trees.o trees.c +
-gcc  -O3 -Wall -c -o uncompr.o uncompr.c +
-gcc  -O3 -Wall -c -o zutil.o zutil.c +
-ar rcs libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o +
-gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o +
-windres --define GCC_WINDRES -o zlibrc.o win32/zlib1.rc +
-gcc -shared -Wl,--out-implib,libz.dll.a +
-        -o zlib1.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclo +
-se.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o +
- uncompr.o zutil.o  zlibrc.o +
-Creating library file: libz.dll.a +
-strip zlib1.dll +
-gcc  -O3 -Wall -I. -c -o example.o test/example.c +
-gcc  -o example.exe example.o libz.a +
-strip example.exe +
-gcc  -O3 -Wall -I. -c -o minigzip.o test/minigzip.c +
-gcc  -o minigzip.exe minigzip.o libz.a +
-strip minigzip.exe +
-gcc  -o example_d.exe example.o libz.dll.a +
-strip example_d.exe +
-gcc  -o minigzip_d.exe minigzip.o libz.dll.a +
-strip minigzip_d.exe+
 </code> </code>
  
-В результате компиляции наблюдаем в рабочей папке **C:\build\zlib** готовую к употреблению библиотеку **zlib1.dll**, а также служебные файлы **zconf.h**, **zlib.h**, **libz.a** и **libz.dll.a**+  * После скачивания МХЕ в заранее созданном каталоге **~/github**, создаем в корневом каталоге исходных кодов **~/github/mxe** файл **settings.mk** с таким содержимым: 
 +   
 +<code bash> 
 +# This variable controls the number of compilation processes 
 +# within one package ("intra-package parallelism"). 
 +JOBS := 4
  
-Копируем из папки **C:\build\zlib** следующие файлы: +# This variable controls where intermediate files are created 
-  * **zlib1.dll** в папку **C:\Qt\zlib\bin** +# this is necessary when compiling inside a virtualbox shared 
-  * **zconf.h** и **zlib.h** в папку **C:\Qt\zlib\include** +# directorySome commands like strip fail in there with Protocol error 
-  * **libz.a** и **libz.dll.a** в папку  **C:\Qt\zlib\lib**+# default is the current directory 
 +#MXE_TMP := /tmp
  
-После этого временную рабочую папку **C:\build\zlib** можно удалить.+# This variable controls the targets that will build. 
 +MXE_TARGETS := i686-w64-mingw32.shared x86_64-w64-mingw32.shared
  
-Теперь комплект **zlib** готов для конфигурирования и сборки проекта Pi++# This variable controls which plugins are in use
- +# See plugins/README.md for further information. 
- +# override MXE_PLUGIN_DIRS +plugins/gcc9
- +
- +
- +
- +
- +
- +
- +
- +
- +
-===== Компиляция утилиты ccache ===== +
- +
-Подробную инструкцию по сборке утилиты **ccache** можно найти **[[ru:ccache|здесь]]**.+
  
 +# This variable controls the download mirror for SourceForge,
 +# when it is used. Enabling the value below means auto.
 +#SOURCEFORGE_MIRROR := downloads.sourceforge.net
  
 +# The three lines below makes `make` build these "local
 +# packages" instead of all packages.
 +LOCAL_PKG_LIST := qtbase qtmultimedia qtimageformats qttools qtwebkit qtwinextras qtkeychain \
 +qttranslations hunspell libotr tidy-html5 minizip \
 +gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad opus
 +.DEFAULT_GOAL  := local-pkg-list
 +local-pkg-list: $(LOCAL_PKG_LIST)
 +</code>
 +__Особое внимание нужно уделить переменным:__
 +        - **MXE_TARGETS** где нужно указать цели сборки МХЕ, подробнее про это можно почитать в каталоге **docs** или кратко в файле **README.md**. //В примере окружение МХЕ будет компилироваться для 2х целей: i686-w64-mingw32.shared - 32х битная среда, динамические бибилиотеки (*.dll) на выходе; x86_64-w64-mingw32.shared - 64х битная среда, динамические бибилиотеки (*.dll) на выходе.//
 +        - **MXE_TMP** - каталог где будет происходить сборка окружения MXE, если у вас много оперативной памяти (>=32Гб) и каталог **/tmp** монтируется как файловая система **tmpfs**, то данную строчку можно раскомментировать для ускорения сборки
 +        - **LOCAL_PKG_LIST** - список пакетов, которые будут компилироваться по-умолчанию. //В примере показан минимальный список необходимый для сборки полного комплекта Psi+//
 +        - **JOBS** - количество потоков сборки, используется для ускорения сборки на многоядерных системах, значение обычно ставят из соображения **количество ядер процессора + 1**
 +        - **override MXE_PLUGIN_DIR** - в примере эта строка закомментирована. Таким образом можно указать версию компилятора или указать какой-то специфический набор опций (обязательно загляните в каталог plugins). //В примере указан gcc9 как компилятор, а по-умолчанию версия может быть старее или новее.//
 +  
  
-===== Сборка Psi+ в автоматическом режиме (рекомендуется) =====+  * Закончив с настройкой окружения, запускаем его сборку командой:
  
-  * Скачиваем скрипт **[[https://raw.github.com/psi-plus/maintenance/master/scripts/win32/auto-compiler-all-in-one.cmd|auto-compiler-all-in-one.cmd]]** в новую папку (например, **C:\build**) 
-  * Включаем необходимый для сборки параметр **MakeClassic** в положение **1** (если он ещё не включен): 
 <code> <code>
-SET MakeClassic=1 +make
-SET UploadClassic=0 +
-SET MakeClassicDebug=0 +
-SET UploadClassicDebug=0 +
-SET MakeWebkit=0 +
-SET UploadWebkit=0 +
-SET MakeWebkitDebug=0 +
-SET UploadWebkitDebug=0 +
-SET MakePlugins=0 +
-SET UploadPlugins=0 +
-SET MakePluginsDebug=0 +
-SET UploadPluginsDebug=0+
 </code> </code>
-  * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C:\build** и ждём окончания его выполнения 
  
-Если скрипт отработал успешно, то в рабочей папке **C:\build** появится архив, содержащий скомпилированный и готовый к работе бинарный файл **psi-plus.exe**.+Подробнее об опциях сборки пакетов [[https://mxe.cc/#usage|https://mxe.cc/#usage]]
  
 +**ВНИМАНИЕ** Сборка указанных в примере пакетов для 2х целей будет длиться приблизительно 6 часов, в зависимости от мощности вашего сборочного компьютера.
  
 +**СОВЕТ 1** Делайте резервные копии каталога mxe/usr перед каждым обновлением сборочного окружения, особенно если собираете MXE из master
  
 +  * После окончания сборки окружения МХЕ можно приступать к сборке Psi+
  
 +==== Сборка Psi+ в окружении MXE ====
  
 +  * Создаем общий каталог сборки и скачиваем исходные коды программы Psi+ при помощи утилиты **git**
  
 +<code bash>
 +mkdir -p ~/github/build
 +cd ~/github
 +git clone https://github.com/psi-plus/psi-plus-snapshots.git
 +</code>
  
 +  * Настраиваем окружение для сборки
  
 +<code bash>
 +unset `env | \
 +grep -vi '^EDITOR=\|^HOME=\|^LANG=\|MXE\|^PATH=' | \
 +grep -vi 'PKG_CONFIG\|PROXY\|^PS1=\|^TERM=' | \
 +cut -d '=' -f1 | tr '\n' ' '`
 +export PATH=~/github/mxe/usr/bin:$PATH #тут лучше прописать полный путь к МХЕ
 +</code>
  
 +  * Запускаем симейк к исполнению для конкретной цели, например:
  
 +<code bash>
 +cd ~/github/build
 +i686-w64-mingw32.shared-cmake -DDEV_MODE=ON -DBUNDLED_IRIS_ALL=ON -DENABLE_PLUGINS=ON -DBUILD_PSIMEDIA=ON -DCHAT_TYPE=webkit ../psi-plus-snapshots
 +</code>
  
 +тут вместо **i686-w64-mingw32.shared-cmake** нужно указывать конкретный симейк для конкретной цели. Для варианта из примера это может быть также **x86_64-w64-mingw32.shared-cmake**.
  
 +Эта команда запустит конфигурацию Psi+ для сборки самой Psi+ чатлогом на движке QtWebkit, а также всех плагинов и плагина psimedia
  
 +  * Запускаем команду сборки и подготовки собранных бинарных файлов к работе
  
- +<code bash> 
-===== Компиляция плагинов Psi+ ===== +i686-w64-mingw32.shared-cmake --build . --target all --target prepare-bin --target prepare-bin-libs --parallel 4   #тоже самое что и JOBS в файле конфигурации МХЕ
- +
-  * Скачиваем скрипт **[[https://raw.github.com/psi-plus/maintenance/master/scripts/win32/auto-compiler-all-in-one.cmd|auto-compiler-all-in-one.cmd]]** в новую папку (например, **C:\build**) +
-  * Включаем необходимый для сборки параметр **MakePlugins** в положение **1**: +
-<code> +
-SET MakeClassic=0 +
-SET UploadClassic=0 +
-SET MakeClassicDebug=0 +
-SET UploadClassicDebug=0 +
-SET MakeWebkit=0 +
-SET UploadWebkit=0 +
-SET MakeWebkitDebug=0 +
-SET UploadWebkitDebug=0 +
-SET MakePlugins=1 +
-SET UploadPlugins=0 +
-SET MakePluginsDebug=0 +
-SET UploadPluginsDebug=0+
 </code> </code>
-  * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C:\build** и ждём окончания его выполнения 
- 
-Если скрипт отработал успешно, то в рабочей папке **C:\build** появится архив, содержащий скомпилированные и готовые к работе плагины Psi+. 
- 
- 
- 
  
 +В реультате в каталоге **~/github/build/psi** будет собран *.exe файл Psi+ и в каталоге **~/github/build/psi/plugins** будут собраны все плагины *.dll, а также в каталог **~/github/build/psi** будут скопированы все необходимые для запуска Psi+ библиотеки зависимостей
  
 +Подробнее про флаги для сборки при помощи CMake можно почитать [[https://github.com/psi-im/psi/blob/master/Readme-cmake-ru.txt|тут]]
  
  
Line 833: Line 264:
   * [[http://psi-im.org/|Psi - The cross-platform XMPP client for power users]]   * [[http://psi-im.org/|Psi - The cross-platform XMPP client for power users]]
   * [[http://qt-project.org/|Qt Project]]   * [[http://qt-project.org/|Qt Project]]
-  * [[http://www.developer.nokia.com/Develop/Qt/Tools/|Nokia Developer - Qt-Tools]] 
   * [[http://dependencywalker.com/|Dependency Walker for Windows (x84 & x64)]]   * [[http://dependencywalker.com/|Dependency Walker for Windows (x84 & x64)]]
   * [[http://www.equation.com/servlet/equation.cmd?fa=gdb|GNU Debugger for Windows]]   * [[http://www.equation.com/servlet/equation.cmd?fa=gdb|GNU Debugger for Windows]]
mingw32.1403096126.txt.gz · Last modified: 2014/06/18 12:55 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki