Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:mingw32

Dies ist eine alte Version des Dokuments!


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
C:\>path

PATH=C:\Qt\2010.03\qt\bin;C:\Qt\2010.03\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!)).

<hr>

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.

<hr>

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.

<hr>

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.exe*

<hr>

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

<hr>

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*

<hr>

de/mingw32.1298626168.txt.gz · Zuletzt geändert: 2011/02/25 09:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki