Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:mingw32

Psi+ unter MS Windows (MinGW)

Erforderliche Werkzeuge für den Bau-Prozess

  1. Qt SDK for Open Source C++ development on Windows. Beinhaltet Qt, MinGW, Qt Creator ~ 270 MB
  2. Win32 OpenSSL Libs - Krypto-Bibliotheken ~ 7 MB
  3. Win32 Git - Hilfsprogramme für Git ~ 12 MB
  4. Slik SVN - Hilfsprogramme für SVN ~ 5 MB
  5. TortoiseSVN - Erweiterung für MS Windows Explorer (optional) ~ 20 MB
  6. QConf - Hilfsprogramm zur Projekt Konfiguration, kompilierte Version qconf.exe hier) ~ 0.1 MB
  7. Aspell Libs for msvc2008 - Rechtschreibprüfung Bibliotheken ~ 65 MB
  8. UNSTABLE ccache (Spiegel)– ein Werkzeug zur Beschleunigung baut, ist hier mehr Informationen

Vorbereitungen vor dem Bauen, Umgebungsvariablen setzen und erforderliche Bibliotheken

  • Installieren Sie die oben aufgelisteten Werkzeuge (Nummer 1 - 6).
  • Extrahieren Sie das Verzeichnis QConf aus dem Archiv qconf-1.5-win32-qt460.zip nach C:\Qt
  • Extrahieren Sie die Verzeichnisse include und lib aus dem Archiv lyx-windows-deps-msvc2008.zip nach C:\Qt\2010.02\mingw
  • Unter Computer Properties (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) fügen Sie den Pfad zu der Variablen PATH hinzu (Sollten Sie die Software in einem anderen Pfad als oben angegeben installiert haben, so benutzen Sie bitte Ihren korrekten Pfad für alle Pfadangaben):
C:\>path
PATH=C:\Qt\2010.02\qt\bin;C:\Qt\2010.02\mingw\bin;C:\OpenSSL\bin;C:\Program Files\SlikSvn\bin;C:\Program Files\TortoiseSVN\bin;C:\Qt\QConf;C:\strawberry\c\bin;C:\strawberry\perl\bin;C:\strawberry\perl\site\bin;C:\Program Files\Git\bin

und erzeugen Sie diese neuen Umgebungsvariablen ( mit Ihrem Pfad!):

QMAKESPEC=win32-g++
QTDIR=C:\Qt\2010.02\qt
OPENSSLDir=C:\OpenSSL

Anmerkung: die neuen variablen sind nur für neu gestartete Prozesse gültig, d.h. Sie müssen cmd als Administrator neu starten (Notfalls das System neu starten!).

Verifikation der Installation und der Performance von Qt durch Bauen einer Beispiel Test Applikation

  • Starten Sie eine Konsole cmd.exe als Administrator (Start → Run → cmd)
  • Überprüfen des Installationspfades und der Variablen:
C:\>qmake -v
QMake version 2.01a
Using Qt version 4.6.2 in C:/Qt/2010.02/qt/lib
C:\>echo %QMAKESPEC%
win32-g++
  • Wechseln Sie das Arbeitsverzeichnis zu C:\Qt\2010.02\qt\examples\tutorials
  • Auf der Kommandozeile cmd.exe führen Sie qmake aus, und dann mingw32-make
C:\Qt\2010.02\qt\examples\tutorials>qmake

C:\Qt\2010.02\qt\examples\tutorials>mingw32-make

...................
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
_QMAIN -I'../../../../include/QtCore' -I'../../../../include/QtGui' -I'../../../
../include' -I'../../../../include/ActiveQt' -I'tmp/moc/release_shared' -I'../..
/../../mkspecs/win32-g++' -o tmp/obj/release_shared/moc_finddialog.o tmp/moc/rel
ease_shared/moc_finddialog.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release/part7.exe tmp/obj/rele
ase_shared/addressbook.o tmp/obj/release_shared/finddialog.o tmp/obj/release_sha
red/main.o tmp/obj/release_shared/moc_addressbook.o tmp/obj/release_shared/moc_f
inddialog.o  -L'c:/Qt/2010.02/qt/lib' -L'c:/Qt/2010.02/qt/lib' -lmingw32 -lqtmai
n -lQtGui4 -lQtCore4
mingw32-make[3]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook/part7'
mingw32-make[2]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook/part7'
mingw32-make[1]: Leaving directory `c:/Qt/2010.02/qt/examples/tutorials/addressb
ook'

Das Resultat des Bauprozesses steht in dem Verzeichnis C:\Qt\2010.02\qt\examples\tutorials\addressbook\part7\release

Ein erfolgreicher Bauprozess bedeutet, dass Qt korrekt installiert wurde und einsatzbereit ist.

Kompilieren von OpenSSL Toolkit

  • Entpacken Sie das Archiv mit der OpenSSL-Source-Code (aus § 8 der erforderlichen Werkzeuge) zu C:\OpenSSL
  • In der Datei e_os2.h ändern Sie die Zeile:

von

#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
# define OPENSSL_IMPLEMENT_GLOBAL(type,name)			     \

zu

#ifdef NEVER_OPENSSL_EXPORT_VAR_AS_FUNCTION
# define OPENSSL_IMPLEMENT_GLOBAL(type,name)			     \
  • Benennen Sie die Datei aus C:\Program Files\Git\bin\sh.exe bis C:\Program Files\Git\bin\sh.ex_
  • Run cmd.exe, wechseln zum Ordner C:\OpenSSL und starten Sie den Prozess der Erstellung durch den Befehl ms\mingw32 (Paket von Absatz 4 muss installiert sein):
C:\OpenSSL>ms\mingw32

...........................................
gcc -o tmp\prime.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-frame
-pointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PA
RT_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_M
DC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE      -c .\apps\prime.c
gcc -o tmp\cms.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-frame-p
ointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART
_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC
2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DO
PENSSL_NO_DYNAMIC_ENGINE      -c .\apps\cms.c
gcc -o tmp\openssl.o -DMONOLITH -Ioutinc -Itmp -DL_ENDIAN -DDSO_WIN32 -fomit-fra
me-pointer -O3 -march=i486 -Wall -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_
PART_WORDS -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO
_MDC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5
 -DOPENSSL_NO_DYNAMIC_ENGINE      -c .\apps\openssl.c
gcc -o out\openssl  tmp\verify.o tmp\asn1pars.o tmp\req.o tmp\dgst.o tmp\dh.o tm
p\dhparam.o tmp\enc.o tmp\passwd.o tmp\gendh.o tmp\errstr.o tmp\ca.o tmp\pkcs7.o
 tmp\crl2p7.o tmp\crl.o tmp\rsa.o tmp\rsautl.o tmp\dsa.o tmp\dsaparam.o tmp\ec.o
 tmp\ecparam.o tmp\x509.o tmp\genrsa.o tmp\gendsa.o tmp\s_server.o tmp\s_client.
o tmp\speed.o tmp\s_time.o tmp\apps.o tmp\s_cb.o tmp\s_socket.o tmp\app_rand.o t
mp\version.o tmp\sess_id.o tmp\ciphers.o tmp\nseq.o tmp\pkcs12.o tmp\pkcs8.o tmp
\spkac.o tmp\smime.o tmp\rand.o tmp\engine.o tmp\ocsp.o tmp\prime.o tmp\cms.o tm
p\openssl.o  out\libssl.a out\libcrypto.a  -lwsock32 -lgdi32
Generating the DLLs and input libraries
Done compiling OpenSSL
  • Benennen Sie die Datei wieder ab C:\Program Files\Git\bin\sh.ex_ bis C:\Program Files\Git\bin\sh.exe

Das Ergebnis des Builds finden Sie im Ordner gefunden werden C:\OpenSSL. Es gibt Bibliotheken kompiliert libeay32.dll, libssl32.dll und andere binäre Dateien im Ordner C:\OpenSSL\out.

  • Kopieren Sie die Bibliothek libeay32.dll, libssl32.dll und die Inhalte der Ordner C:\OpenSSL\out auf den neu erstellten Ordner C:\OpenSSL\bin
  • Kopieren Sie aus dem Ordner C:\OpenSSL\out libcrypto.a, libeay32.a, libssl32.a und libssl.a auf den neu erstellten Ordner C:\OpenSSL\lib\MinGW

Die OpenSSL ist jetzt für die Verknüpfung mit dem Psi + ready.

Psi+ im automatischen Modus bauen (empfohlen)

  • Laden Sie das Skript make-psiplus.cmd in ein neues Verzeichnis (z.B. C:\psi-plus\build) herunter
  • Starten Sie das Skript make-psiplus.cmd aus dem Verzeichnis C:\psi-plus\build und warten Sie auf das Ende seiner Ausführung

Wenn das Skript fehlerfrei ab lief, erscheint in C:\psi-plus\build das kompilierte und einsatzbereite Programm psi-plus.exe

Psi+ im manuellen Modus bauen (NICHT empfohlen)

Psi Quellcode besorgen

  • Laden Sie den Psi Quellcode von dem offiziellen Psi git Repository herunter. Dazu starten Sie cmd.exe aus dem Verzeichnis psi-git und führen Sie die folgenden Kommandos in der angegebenen Reihenfolge aus:
git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update

Vorbereitung des Psi Quellcodes zum Bauen

  • Entfernen sie das Kommentarzeichen in der 3ten Zeile der Datei psi-git/conf_windows.pri:

Diese lautete

#CONFIG += qca-static

und wird zu

CONFIG += qca-static
  • Ebenso die 26te Zeile :

Diese lautete

    #DEFINES += HAVE_ASPELL 

und wird zu

    DEFINES += HAVE_ASPELL 
  • In der Datei psi-git/third-party/qca/qca-ossl.pri benennen Sie den Schlüssel -llibeay32 um in -leay32
  • Um Plugins einzuschalten, entfernen Sie das Kommentarzeichen vor der angegebenen Zeile in der Datei psi-git/src/src.pro:

Diese lautete

#CONFIG += psi_plugins

und wird zu

CONFIG += psi_plugins
  • Optional: Um von der Release zur Debug Konfiguration umzuschalten, ändern Sie die 2te Zeile in der Datei psi-git/conf_windows.pri von
CONFIG += release

nach

CONFIG += debug
  • Optional: Um automatisch eine Debug_Konsole mit Psi+ zu starten, fügen Sie die folgende Zeile in die Datei psi-git/src/src.pro ein:
CONFIG += console
  • Optional: Um WebKit Unterstützung in Psi+ einzuschalten, fügen Sie die folgende Zeile in die Datei psi-git/conf_windows.priein:
CONFIG += webkit

Anbringen von Patches an den Psi Quellcode

Bevor Sie GNU/Patch für Windows benutzen, beachten Sie bitte folgendes:

Unter MS-Windows muss die Patchdatei eine Textdatei sein, d.h. das Zeilenende-Zeichen muss CR-LF sein.
Eine Datei mit LF führt zu der Fehlermeldung: “Assertion failed, hunk, file patch.c, line 343,” unless the option ‘–binary’ is given.
  • Starten Sie cmd.exe in dem Verzeichnis psi-git und führen Sie die folgenden Kommandos in der angegebenen Reihenfolge aus:
patch -p1 < 0000-psiplus-aboutdlg.diff
patch -p1 < 0010-less-includes.diff
patch -p1 < 0020-psi-iconsets.diff
patch -p1 < 0030-psi-webkit.diff
patch -p1 < 0040-psi-muc-topic.diff
patch -p1 < 0050-psi-receipts.diff
patch -p1 < 0060-psi-popup-avatar.diff
patch -p1 < 0070-psi-entity-time.diff
patch -p1 < 0080-psi-mood-icons.diff
patch -p1 < 0090-psi-muc-change-affiliation.diff
.....................

Anmerkung: Bevor Sie Patches herunterladen und anbringen, überprüfen Sie unbedingt den Dateinamen anhand der aktuellen Liste.

Psi+ Bauprozess

  • Öffnen Sie das Verzeichnis psi-git mit den heruntergeladenen Psi+ Quellcode Dateien
  • In diesem Verzeichnis führen Sie die Kommandos qmake psi.pro und mingw32-make (oder make clean und make) aus

Nach einiger Zeit (10 - 40 Minuten) suchen Sie nach dem Ergebnis der Kompilation psi.exe im Verzeichnis psi-git/src/release.

Anmerkung: Die Dateigröße von psi.exe kann unterschiedlich sein (Hängt von der debug/release Konfiguration ab):

  • Für die release Konfiguration liegt die Dateigröße zwischen 5 MB und 12 MB
  • Für die debug Konfiguration liegt die Dateigröße zwischen 30 MB und 60 MB

Kompilieren der Plugins

Als Beispiel betrachten wir die Kompilation des folgenden Plugins.

Anmerkung: Für korrektes Kompilieren der Plugins müssen Sie zunächst den Psi Quellcode herunterladen und die Patches anbringen.

Conference Logger Plugin

  • Laden Sie den Quellcode des Plugins von hier herunter
  • Kopieren Sie die Quellcode Dateien in das Verzeichnis psi-git/src/plugins/generic/conferenceloggerplugin
  • Führen Sie das Kommando qmake conferenceloggerplugin.pro aus
  • Führen Sie das Kommando mingw32-make -f makefile.release aus
C:\psi-plus\build\psi\src\plugins\generic\conferenceloggerplugin>qmake conferenceloggerplugin.pro

C:\psi-plus\build\psi\src\plugins\generic\conferenceloggerplugin>mingw32-make -f makefile.release

...................
C:/Qt/2010.02/qt/bin/moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_D
EBUG -DQT_PLUGIN -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I'
c:/Qt/2010.02/qt/include/QtCore' -I'c:/Qt/2010.02/qt/include/QtGui' -I'c:/Qt/201
0.02/qt/include/QtXml' -I'c:/Qt/2010.02/qt/include' -I'../../include' -I'c:/Qt/2
010.02/qt/include/ActiveQt' -I'release' -I'c:/Qt/2010.02/qt/mkspecs/win32-g++' -
D__GNUC__ -DWIN32 typeaheadfind.h -o release/moc_typeaheadfind.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_DLL -DQT_NO_DEBUG -DQT_PLUGIN -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_
THREAD_SUPPORT -I'c:/Qt/2010.02/qt/include/QtCore' -I'c:/Qt/2010.02/qt/include/Q
tGui' -I'c:/Qt/2010.02/qt/include/QtXml' -I'c:/Qt/2010.02/qt/include' -I'../../i
nclude' -I'c:/Qt/2010.02/qt/include/ActiveQt' -I'release' -I'c:/Qt/2010.02/qt/mk
specs/win32-g++' -o release/moc_typeaheadfind.o release/moc_typeaheadfind.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,release/libconferenceloggerplug
in.a -o release/conferenceloggerplugin.dll release/conferenceloggerplugin.o rele
ase/typeaheadfind.o release/moc_typeaheadfind.o  -L'c:/Qt/2010.02/qt/lib' -lQtXm
l4 -lQtGui4 -lQtCore4
Creating library file: release/libconferenceloggerplugin.a
  • Das kompilierte Plugin conferenceloggerplugin.dll befindet sich in dem Verzeichnis psi-git/src/plugins/generic/conferenceloggerplugin/release
de/mingw32.txt · Zuletzt geändert: von zet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki