mingw32
Differences
This shows you the differences between two versions of the page.
mingw32 [2014/09/01 14:09] – zet | mingw32 [2024/06/16 11:46] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Необходимый инструментарий ===== | ===== Необходимый инструментарий ===== | ||
- | 1. **[[http://master.qt-project.org/official_releases/ | + | 1. **[[http://www.cmake.org/|CMake build system]]** -- версию 3.7.2 можно взять |
- | 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]]** |
- | < | + | 3. **[[http://www.openssl.org/source/|OpenSSL]]** |
- | 3. **[[http:// | + | 4. **[[http:// |
- | 4. **[[https://github.com/msysgit/ | + | 5. **[[http://www.zlib.net/|Zlib for Windows]]** |
- | 5. **[[http:// | + | 8. **[[http:// |
- | + | ||
- | 6. **[[http:// | + | |
- | + | ||
- | 7. **[[http:// | + | |
- | + | ||
- | 8. **[[http:// | + | |
- | + | ||
- | 9. **[[http:// | + | |
- | + | ||
- | 10. **[[http:// | + | |
- | + | ||
- | 11. **[[http:// | + | |
**__Опционально__: | **__Опционально__: | ||
- | * **[[http://download.tortoisegit.org/tgit/|TortoiseGit]]** | + | * **[[https://github.com/zdenop/hunspell-mingw|Hunspell for MinGW]]** - библиотека проверки орфографии |
- | * < | + | |
- | * < | + | |
- | * < | + | |
Line 37: | Line 22: | ||
- | ===== Подготовка к сборке, | ||
- | * Устанавливаем необходимый инструментарий, | ||
- | * Создаём в папке **C: | ||
- | * Распаковываем папки **include** и **lib** из архива **[[http:// | ||
- | * Распаковываем содержимое архива **[[http:// | ||
- | * Распаковываем содержимое архива **[[http:// | ||
- | * Скачиваем и распаковываем содержимое архива **[[http:// | ||
- | * файлы из папки **bin** копируем в папку **Psi+** (например, | ||
- | * папки **include** и **lib** копируем в папку **C: | ||
- | * < | ||
- | * < | ||
- | < | ||
- | ........ | ||
- | QMAKE_CC = ccache | ||
- | ........ | ||
- | QMAKE_CXX = ccache $${CROSS_COMPILE}g++ | ||
- | </ | ||
- | * В свойствах компьютера (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) добавляем необходимые пути в системную переменную [[http:// | ||
- | < | ||
- | C:\>path | ||
- | </ | ||
- | < | + | ===== Компиляция OpenSSL |
- | PATH=C: | + | |
- | </ | + | |
- | А также создаём новые системные переменные __(при необходимости заменив пути на свои)__: | + | |
- | < | + | |
- | GITDIR=C: | + | |
- | LIBIDNDIR=C: | + | |
- | MINGWDIR=C: | + | |
- | OPENSSLDIR=C: | + | |
- | QCADIR=C:\Qt\QCA | + | |
- | QCONFDIR=C: | + | |
- | QMAKESPEC=win32-g++ | + | |
- | QTDIR=C: | + | |
- | ZLIBDIR=C: | + | |
- | </ | + | |
- | **__Примечание 1:__** Переменные обновятся только для вновь запущенных процессов, | + | __**Важно!**__ Данный алгоритм справедлив для версий OpenSSL выше v1.x.x. |
- | + | ||
- | **__Примечание 2:__** Если у вас закрыт доступ наружу по порту **9418**, то вы **не сможете** скачать исходный код **Psi** и **Psi+** по протоколу **[[git:// | + | |
- | < | + | |
- | C: | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== Проверка правильной установки и работоспособности Qt на примере сборки тестовой программы ===== | + | |
- | + | ||
- | * Запускаем командную строку **cmd.exe** с правами администратора (Start → Run → cmd) | + | |
- | * Проверяем правильность установки путей и переменных командой: | + | |
- | < | + | |
- | C: | + | |
- | </ | + | |
- | Видим следующее: | + | |
- | < | + | |
- | C: | + | |
- | QMake version 2.01a | + | |
- | Using Qt version 4.8.6 in C: | + | |
- | </ | + | |
- | А также командой: | + | |
- | < | + | |
- | echo %QMAKESPEC% | + | |
- | </ | + | |
- | Видим ответ: | + | |
- | < | + | |
- | C:\>echo %QMAKESPEC% | + | |
- | win32-g++ | + | |
- | </ | + | |
- | * Меняем рабочую папку на **C: | + | |
- | < | + | |
- | cd C: | + | |
- | </ | + | |
- | * Выполняем команду: | + | |
- | < | + | |
- | C: | + | |
- | </ | + | |
- | * Затем выполняем команду: | + | |
- | < | + | |
- | mingw32-make -f makefile.release | + | |
- | </ | + | |
- | Видим следующее: | + | |
- | < | + | |
- | C: | + | |
- | e | + | |
- | 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" | + | |
- | \QtCore" | + | |
- | clude\ActiveQt" | + | |
- | 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" | + | |
- | \QtCore" | + | |
- | clude\ActiveQt" | + | |
- | main.cpp | + | |
- | C: | + | |
- | LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPP | + | |
- | ORT -DQT_NEEDS_QMAIN -I" | + | |
- | " -I" | + | |
- | ..\..\mkspecs\win32-g++" | + | |
- | 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" | + | |
- | \QtCore" | + | |
- | clude\ActiveQt" | + | |
- | ressbook.o release\moc_addressbook.cpp | + | |
- | g++ -Wl,-s -mthreads -Wl, | + | |
- | book.o release/ | + | |
- | lqtmain -lQtGui4 -lQtCore4 | + | |
- | </ | + | |
- | + | ||
- | Результат сборки release-версии тестового приложения в виде исполняемого файла **part1.exe** наблюдаем в папке **C: | + | |
- | + | ||
- | Успешная сборка тестового приложения означает, | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== Компиляция OpenSSL Toolkit v1.0.x ===== | + | |
- | + | ||
- | __**Важно!**__ Данный алгоритм справедлив для версий OpenSSL выше v1.0.x. | + | |
* Создаём рабочую папку **C: | * Создаём рабочую папку **C: | ||
- | * Распаковываем архив с исходниками OpenSSL v1.0.x (из **[[http:// | + | * Распаковываем архив с исходниками OpenSSL v1.x.x (из **[[http:// |
- | * Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[http://code.google.com/p/msysgit/downloads/list? | + | * Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[https://github.com/git-for-windows/git/releases/download/ |
< | < | ||
MAKE=mingw32-make PERL=perl.exe ./config --prefix=/ | MAKE=mingw32-make PERL=perl.exe ./config --prefix=/ | ||
</ | </ | ||
- | Видим процесс конфигурирования проекта: | ||
- | < | ||
- | ........................... | ||
- | making links in ssl... | ||
- | mingw32-make[1]: | ||
- | ssl.h => ../ | ||
- | ssl2.h => ../ | ||
- | ssl3.h => ../ | ||
- | ssl23.h => ../ | ||
- | tls1.h => ../ | ||
- | dtls1.h => ../ | ||
- | kssl.h => ../ | ||
- | srtp.h => ../ | ||
- | ssltest.c => ../ | ||
- | mingw32-make[1]: | ||
- | making links in engines... | ||
- | mingw32-make[1]: | ||
- | making links in engines/ | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[1]: | ||
- | making links in apps... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | making links in test... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | making links in tools... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | generating dummy tests (if needed)... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | Configured for mingw. | + | По завершении |
- | </ | + | |
- | Далее запускаем компиляцию: | + | |
< | < | ||
mingw32-make | mingw32-make | ||
- | </ | ||
- | Видим процесс компиляции: | ||
- | < | ||
- | .................................. | ||
- | gcc -I.. -I../ | ||
- | 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 | ||
- | o asn1test.c | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | gcc -I.. -I../ | ||
- | 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 | ||
- | .o dummytest.c | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[1]: | ||
- | making all in tools... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | </ | ||
- | __**Примечание**: | ||
- | < | ||
- | build_all: build_libs build_apps build_tests build_tools | ||
- | </ | ||
- | и удаляем из неё параметр // | ||
- | |||
- | И в завершении выполняем команду: | ||
- | < | ||
mingw32-make install | mingw32-make install | ||
</ | </ | ||
- | Видим процесс инсталляции: | ||
- | < | ||
- | ......................................... | ||
- | making install in tools... | ||
- | mingw32-make[1]: | ||
- | mingw32-make[1]: | ||
- | installing libcrypto.a | ||
- | installing libssl.a | ||
- | installing libcrypto.dll.a | ||
- | installing libeay32.dll | ||
- | installing libssl.dll.a | ||
- | installing ssleay32.dll | ||
- | mingw32-make[1]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[2]: | ||
- | mingw32-make[1]: | ||
- | OpenSSL shared libraries have been installed in: | ||
- | /c/OpenSSL | ||
- | |||
- | If this directory is not in a standard system path for dynamic/ | ||
- | libraries, then you will have problems linking and executing | ||
- | applications that use OpenSSL libraries UNLESS: | ||
- | |||
- | * you link with static (archive) libraries. | ||
- | paranoid about security, you should use static libraries. | ||
- | * you use the GNU libtool code during linking | ||
- | (http:// | ||
- | * 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:// | ||
- | * 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 / | ||
- | and run ldconfig(8) on Linux systems. | ||
- | * you define the LD_LIBRARY_PATH, | ||
- | 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 / | ||
- | chmod 644 / | ||
- | cp libssl.pc / | ||
- | chmod 644 / | ||
- | cp openssl.pc / | ||
- | chmod 644 / | ||
- | </ | ||
- | |||
- | В результате компиляции и инсталляции пакета **OpenSSL Toolkit v1.0.x** получаем скомпилированные библиотеки **libeay32.dll** и **ssleay32.dll** в папке **C: | ||
- | |||
- | Теперь пакет **OpenSSL Toolkit v1.0.x** готов для линковки и сборки Psi+. Временную папку сборки **C: | ||
- | |||
- | |||
- | |||
- | ===== Компиляция утилиты конфигурирования QConf ===== | ||
- | |||
- | * Запускаем __от имени Администратора__ **Git Bash** (идёт в комплекте с **[[https:// | ||
- | * Задаём необходимые пути: | ||
- | < | ||
- | PATH=$PATH:/ | ||
- | </ | ||
- | * Скачиваем исходный код **[[http:// | ||
- | < | ||
- | git clone https:// | ||
- | </ | ||
- | Видим процесс скачивания: | ||
- | < | ||
- | $ git clone https:// | ||
- | Cloning into ' | ||
- | remote: Reusing existing pack: 239, done. | ||
- | Receiving objremote: Total 239 (delta 0), reused 0 (delta 0)ects: | ||
- | R | ||
- | Receiving objects: 100% (239/239), 82.14 KiB | 0 bytes/s, done. | ||
- | Resolving deltas: 100% (152/152), done. | ||
- | Checking connectivity... done. | ||
- | </ | ||
- | * Далее переходим в папку **C: | ||
- | < | ||
- | ./configure | ||
- | </ | ||
- | Видим процесс конфигурирования проекта: | ||
- | < | ||
- | $ ./configure | ||
- | Configuring QConf ... | ||
- | Verifying Qt 4 build environment ... ok | ||
- | |||
- | Good, your configure finished. | ||
- | </ | ||
- | * Далее запускаем компиляцию: | ||
- | < | ||
- | mingw32-make -f makefile.release | ||
- | </ | ||
- | Видим процесс компиляции: | ||
- | < | ||
- | $ 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' | ||
- | / | ||
- | / | ||
- | p.o src/ | ||
- | 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' | ||
- | / | ||
- | / | ||
- | rc/ | ||
- | c:/ | ||
- | 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' | ||
- | / | ||
- | / | ||
- | .o release/ | ||
- | g++ -Wl,-s -Wl, | ||
- | lease/ | ||
- | </ | ||
- | * Копируем из рабочей папки **C: | ||
- | |||
- | Теперь утилита конфигурирования **QConf** готова для конфигурирования проекта Psi+. | ||
- | |||
- | Если по каким-либо причинам не получается самостоятельно скомпилировать утилиту **QConf**, то можно воспользоваться уже готовой версией утилиты, | ||
- | |||
- | __**ВАЖНО!**__ | ||
- | |||
- | Далее для работы с **QConf** в папке **C: | ||
- | < | ||
- | @set PATH=%PATH%; | ||
- | </ | ||
- | и при конфигурировании проекта вызывать именно его. Например: | ||
- | < | ||
- | ........ | ||
- | call qconf.cmd | ||
- | ........ | ||
- | </ | ||
- | |||
- | Временную папку сборки **C: | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
+ | В результате компиляции и инсталляции пакета **OpenSSL Toolkit v1.x.x** получаем скомпилированные библиотеки **libeay32.dll** и **ssleay32.dll** в папке **C: | ||
+ | Теперь пакет **OpenSSL Toolkit v1.x.x** готов для линковки и сборки Psi+. Временную папку сборки **C: | ||
Line 419: | Line 52: | ||
* Запускаем __от имени Администратора__ **CMD** в рабочей папке **C: | * Запускаем __от имени Администратора__ **CMD** в рабочей папке **C: | ||
- | * Скачиваем исходный код QCA из официального **[[http://quickgit.kde.org/?p=qca.git|git-репозитория]]**: | + | * Скачиваем исходный код QCA из официального **[[https://github.com/KDE/ |
< | < | ||
C: | C: | ||
- | </ | ||
- | Видим процесс скачивания: | ||
- | < | ||
- | $ git clone git:// | ||
- | Cloning into ' | ||
- | remote: Counting objects: 14036, done. | ||
- | remote: Compressing objects: 100% (5391/ | ||
- | remote: Total 14036 (delta 8820), reused 13132 (delta 8167) | ||
- | Receiving objects: 100% (14036/ | ||
- | Resolving deltas: 100% (8820/ | ||
- | Checking connectivity... done. | ||
- | Checking out files: 100% (467/467), done. | ||
</ | </ | ||
* Переходим в папку **C: | * Переходим в папку **C: | ||
< | < | ||
- | cmake -G "MinGW Makefiles" | + | cmake -G "MinGW Makefiles" |
- | </ | + | |
- | Видим следующее: | + | |
- | < | + | |
- | C:\build\qca> | + | |
- | BUILD_TYPE=Release | + | |
- | -- Could NOT find Doxygen (missing: | + | |
- | -- Checking for certstore.. | + | |
- | -- Using built in certstore. | + | |
- | -- certstore path: C:/ | + | |
- | -- mlock(2) does not take a void * | + | |
- | CMake Warning at plugins/ | + | |
- | 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:/ | + | |
- | Binary will be installed to C:/ | + | |
- | Library will be installed to C:/ | + | |
- | Feature file will be installed to C:/ | + | |
- | Public headers will be installed to C:/ | + | |
- | Private headers will be installed to C:/ | + | |
- | Documentation will be installed to C:/ | + | |
- | Man page will be installed to C:/ | + | |
- | Pkg-config file will be installed to C:/ | + | |
- | + | ||
- | -- Configuring done | + | |
- | -- Generating done | + | |
- | -- Build files have been written to: C:/ | + | |
</ | </ | ||
+ | Где " | ||
* После успешного конфигурирования проекта запускаем сборку командой: | * После успешного конфигурирования проекта запускаем сборку командой: | ||
< | < | ||
mingw32-make | mingw32-make | ||
- | </ | ||
- | Видим процесс компиляции: | ||
- | < | ||
- | ................................ | ||
- | [ 95%] Generating ssltest.moc | ||
- | Scanning dependencies of target ssltest | ||
- | [ 95%] Building CXX object examples/ | ||
- | 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/ | ||
- | 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/ | ||
- | .cpp.obj | ||
- | [ 98%] Building CXX object examples/ | ||
- | obj | ||
- | Linking CXX executable ..\..\bin\tlssocket.exe | ||
- | [ 98%] Built target tlssocket | ||
- | Scanning dependencies of target mozcerts | ||
- | [ 99%] Building CXX object tools/ | ||
- | Linking CXX executable ..\..\bin\mozcerts.exe | ||
- | [ 99%] Built target mozcerts | ||
- | [100%] Generating main.moc | ||
- | Scanning dependencies of target qcatool | ||
- | [100%] Building CXX object tools/ | ||
- | Linking CXX executable ..\..\bin\qcatool.exe | ||
- | [100%] Built target qcatool | ||
</ | </ | ||
* Теперь запускаем установку компонентов **QCA** в заданную при конфигурировании папку: | * Теперь запускаем установку компонентов **QCA** в заданную при конфигурировании папку: | ||
Line 518: | Line 69: | ||
mingw32-make install | mingw32-make install | ||
</ | </ | ||
- | Видим процесс установки: | ||
- | < | ||
- | ................................ | ||
- | [ 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: | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | -- Installing: C:/ | ||
- | </ | ||
- | < | ||
- | Теперь комплект **QCA** готов для конфигурирования и сборки проекта | + | * В каталоге **C: |
+ | |||
+ | Теперь комплект **QCA** готов для конфигурирования и сборки проекта | ||
- | Если по каким-либо причинам не получается самостоятельно скомпилировать **QCA**, то можно воспользоваться уже готовой версией, | ||
Line 579: | Line 94: | ||
< | < | ||
mingw32-make -f win32/ | mingw32-make -f win32/ | ||
- | </ | ||
- | Видим процесс компиляции: | ||
- | < | ||
- | $ mingw32-make -f win32/ | ||
- | 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/ | ||
- | gcc -shared -Wl, | ||
- | -o zlib1.dll win32/ | ||
- | se.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o | ||
- | | ||
- | Creating library file: libz.dll.a | ||
- | strip zlib1.dll | ||
- | gcc -O3 -Wall -I. -c -o example.o test/ | ||
- | gcc -o example.exe example.o libz.a | ||
- | strip example.exe | ||
- | gcc -O3 -Wall -I. -c -o minigzip.o test/ | ||
- | 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 | ||
</ | </ | ||
Line 628: | Line 105: | ||
После этого временную рабочую папку **C: | После этого временную рабочую папку **C: | ||
- | Теперь комплект **zlib** готов для конфигурирования и сборки проекта | + | Теперь комплект **zlib** готов для конфигурирования и сборки проекта |
Line 639: | Line 116: | ||
+ | ===== Компиляция библиотеки Hunspell ===== | ||
+ | * Скачиваем при помощи Git исходники из [[https:// | ||
+ | < | ||
+ | C: | ||
+ | </ | ||
+ | * Переходим в каталог исходников | ||
+ | < | ||
+ | cd hunspell-mingw | ||
+ | </ | ||
+ | * Создаем каталог для теневой сборки и переходим в него: | ||
+ | < | ||
+ | mkdir build | ||
+ | cd build | ||
+ | </ | ||
+ | * Выполняем конфигурацию исходников: | ||
+ | < | ||
+ | cmake -G "MinGW Makefiles" | ||
+ | </ | ||
+ | Где C:/Hunspell - путь куда будет установлена библиотека libhunspell после сборки | ||
+ | |||
+ | * Если конфигурация прошла успешно, | ||
+ | < | ||
+ | mingw32-make | ||
+ | mingw32-make install | ||
+ | </ | ||
+ | |||
+ | Если сборка прошла успешно, | ||
- | ===== Компиляция утилиты ccache ===== | ||
- | Подробную инструкцию по сборке утилиты **ccache** можно найти **[[ru: | ||
- | ===== Сборка Psi+ в автоматическом режиме (рекомендуется) ===== | ||
- | * Скачиваем скрипт **[[https:// | + | |
- | * Включаем необходимый | + | ===== Способ сборки Psi+ при помощи кросс-компиляции из OS Linux (рекомендовано) ===== |
- | < | + | |
- | SET MakeClassic=1 | + | ==== Настройка |
- | SET UploadClassic=0 | + | |
- | SET MakeClassicDebug=0 | + | * Инструкция по скачиванию доступна на официальном сайте проекта [[https:// |
- | SET UploadClassicDebug=0 | + | |
- | SET MakeWebkit=0 | + | < |
- | SET UploadWebkit=0 | + | cd ~ |
- | SET MakeWebkitDebug=0 | + | mkdir -p github |
- | SET UploadWebkitDebug=0 | + | cd ~/github |
- | SET MakePlugins=0 | + | git clone https:// |
- | SET UploadPlugins=0 | + | cd mxe |
- | SET MakePluginsDebug=0 | + | |
- | SET UploadPluginsDebug=0 | + | |
</ | </ | ||
- | * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C: | ||
- | Если скрипт отработал успешно, то в рабочей папке **C:\build** появится архив, содержащий скомпилированный и готовый к работе бинарный файл **psi-plus.exe**. | + | * После скачивания МХЕ в заранее созданном каталоге **~/github**, создаем в корневом каталоге исходных кодов **~/ |
+ | |||
+ | <code bash> | ||
+ | # This variable controls the number of compilation processes | ||
+ | # within one package (" | ||
+ | JOBS := 4 | ||
+ | # This variable controls where intermediate files are created | ||
+ | # this is necessary when compiling inside a virtualbox shared | ||
+ | # directory. Some commands like strip fail in there with Protocol error | ||
+ | # default is the current directory | ||
+ | #MXE_TMP := /tmp | ||
+ | # This variable controls the targets that will build. | ||
+ | MXE_TARGETS := i686-w64-mingw32.shared x86_64-w64-mingw32.shared | ||
+ | # This variable controls which plugins are in use. | ||
+ | # See plugins/ | ||
+ | # override MXE_PLUGIN_DIRS += plugins/ | ||
+ | # This variable controls the download mirror for SourceForge, | ||
+ | # when it is used. Enabling the value below means auto. | ||
+ | # | ||
+ | # The three lines below makes `make` build these "local | ||
+ | # 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: | ||
+ | </ | ||
+ | __Особое внимание нужно уделить переменным: | ||
+ | - **MXE_TARGETS** где нужно указать цели сборки МХЕ, подробнее про это можно почитать в каталоге **docs** или кратко в файле **README.md**. //В примере окружение МХЕ будет компилироваться для 2х целей: i686-w64-mingw32.shared - 32х битная среда, динамические бибилиотеки (*.dll) на выходе; | ||
+ | - **MXE_TMP** - каталог где будет происходить сборка окружения MXE, если у вас много оперативной памяти (> | ||
+ | - **LOCAL_PKG_LIST** - список пакетов, | ||
+ | - **JOBS** - количество потоков сборки, | ||
+ | - **override MXE_PLUGIN_DIR** - в примере эта строка закомментирована. Таким образом можно указать версию компилятора или указать какой-то специфический набор опций (обязательно загляните в каталог plugins). //В примере указан gcc9 как компилятор, | ||
+ | | ||
+ | * Закончив с настройкой окружения, | ||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | Подробнее об опциях сборки пакетов [[https:// | ||
+ | **ВНИМАНИЕ** Сборка указанных в примере пакетов для 2х целей будет длиться приблизительно 6 часов, в зависимости от мощности вашего сборочного компьютера. | ||
+ | **СОВЕТ 1** Делайте резервные копии каталога mxe/usr перед каждым обновлением сборочного окружения, | ||
+ | * После окончания сборки окружения МХЕ можно приступать к сборке Psi+ | ||
+ | ==== Сборка Psi+ в окружении MXE ==== | ||
+ | * Создаем общий каталог сборки и скачиваем исходные коды программы Psi+ при помощи утилиты **git** | ||
+ | <code bash> | ||
+ | mkdir -p ~/ | ||
+ | cd ~/github | ||
+ | git clone https:// | ||
+ | </ | ||
- | ===== Компиляция плагинов Psi+ ===== | + | * Настраиваем окружение для сборки |
- | * Скачиваем скрипт **[[https:// | + | <code bash> |
- | * Включаем необходимый для | + | unset `env | \ |
- | < | + | grep -vi ' |
- | SET MakeClassic=0 | + | grep -vi ' |
- | SET UploadClassic=0 | + | cut -d ' |
- | SET MakeClassicDebug=0 | + | export PATH=~/ |
- | 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 | + | |
</ | </ | ||
- | * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C: | ||
- | Если скрипт отработал | + | * Запускаем симейк |
+ | <code bash> | ||
+ | cd ~/ | ||
+ | i686-w64-mingw32.shared-cmake -DDEV_MODE=ON -DBUNDLED_IRIS_ALL=ON -DENABLE_PLUGINS=ON -DBUILD_PSIMEDIA=ON -DCHAT_TYPE=webkit ../ | ||
+ | </ | ||
+ | тут вместо **i686-w64-mingw32.shared-cmake** нужно указывать конкретный симейк для конкретной цели. Для варианта из примера это может быть также **x86_64-w64-mingw32.shared-cmake**. | ||
+ | Эта команда запустит конфигурацию Psi+ для сборки самой Psi+ чатлогом на движке QtWebkit, а также всех плагинов и плагина psimedia | ||
+ | |||
+ | * Запускаем команду сборки и подготовки собранных бинарных файлов к работе | ||
+ | |||
+ | <code bash> | ||
+ | i686-w64-mingw32.shared-cmake --build . --target all --target prepare-bin --target prepare-bin-libs --parallel 4 # | ||
+ | </ | ||
+ | В реультате в каталоге **~/ | ||
+ | Подробнее про флаги для сборки при помощи CMake можно почитать [[https:// | ||
Line 714: | Line 264: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
- | * [[http:// | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// |
mingw32.1409580553.txt.gz · Last modified: 2014/09/01 14:09 by zet