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.pri*ein:
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: 2011/02/28 13:52 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki