Hallo zusammen.
Ich stehe vor dem Problem DBD-Pg (Vorzugsweise 1.4x)
für WindowsXP zu kompilieren. Allerdings gestaltet sich das
leider nicht so einfach wie gewünscht. Sämtliche Recherchen
brachten keine befriedigende Lösung hervor,
obwohl das ein häufiges Problem zu sein scheint
(z. B. hier im Forum unter dem Thema: "PostgreSQL mit Perl unter Win32 ansteuern, es klappt nicht").
Wenn also jemand DBD-Pg schon erfolgreich unter WindowsXP im Einsatz hat, würde ich mich sehr über eine Lösung freuen.
Gebraucht wird das ganze für den Produktiveinsatz, deshalb entfallen alle Alternativen (siehe Pkt. C).
Standardmäßig läuft alles problemlos unter Linux - ein Setup unter WindowsXP wäre allerdings wünschenswert,
daher die Notwendigkeit für DBD-Pg unter XP.
Hier nun mein Vorgehen zur genaueren Beschreibung.
A. Folgende Lösungsmöglichkeiten bin ich durch:
---------------------------------------------
1. Genau nach Anleitung in der Readme.win32 des Moduls.
Also zuerst eigenes PostgreSQL (8.1.3) bauen - erfolgreich.
Perl (stable=5.8.8) bauen (non-threaded) - erfolgreich
DBI (1.50)bauen - erfolgreich
DBD-Pg 1.48 - kein Erfolg
Versucht mit den Buildumgebungen: VS6,VS7,VS8,MinGW
Ebenfalls versucht mit dem installierbaren PostgreSQL - Ergebnis gleich
2. Mit ActivePerl (
http://www.activestate.com/Products/ActivePerl/ in den Versionen 5.6.1.6, 5.7 , 5.8.8.817)
2.1 DBI jeweils selbst übersetzt, DBD-Pg scheitert jedes mal
2.2 DBI über ppm, DBD-Pg scheitert wieder.
2.3 DBI über ppm, DBD-Pg ebenfalls über ppm (
http://theoryx5.uwinnipeg.ca/ppms/)
Nachdem es installiert ist, explodiert Perl bei jedem Versuch einer Datenbankverbindung zum PostgreSQL-Server.
3. Mit PxPerl (
http://www.pxperl.com/)
Wirklich schönes Packet, Compiler lassen sich leicht switchen und nmake ist dabei.
Leider das gleiche Problem, da es nichts mit Perl selbst zu tun hat.
4. Mit dem Camelpack (
http://stennie.org/camelpack/)
Da ist schon alles dabei (ActivePerl, Dev-Cpp, nmake).
Ansonsten siehe Pkt. 3.
B. Inakzeptable Alternativen:
---------------------------
Es darf nicht unter cygwin laufen.
DBD-PgPP ist unzureichend, da es keine BLOBs unterstützt (sind aber zwingend erforderlich)
ODBC aus diversen Gründen ebenfalls unzureichend.
C. Eingrenzung (spekulativ):
--------------------------
Scheint dann kritisch zu werden, wenn von WinAPI gebrauch gemacht wird.
...
C:\Dev-Cpp\include\winbase.h(1446) : error C2085: 'GetProcessTimes' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1447) : error C2085: 'GetProcessVersion' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1448) : error C2085: 'GetProcessWindowStation' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1449) : error C2085: 'GetProcessWorkingSetSize' : not in formal parameter list
...
auch nicht unüblich sind etliche Fehlermeldungen wie:
...
dbdimp.o(.text+0x8bd4):dbdimp.c: undefined reference to `lo_tell'
dbdimp.o(.text+0x8c6e):dbdimp.c: undefined reference to `lo_unlink'
dbdimp.o(.text+0x8d5e):dbdimp.c: undefined reference to `lo_import'
dbdimp.o(.text+0x8e4f):dbdimp.c: undefined reference to `lo_export'
collect2: ld returned 1 exit status
...
Es wäre wirklich schön, wenn jemand einen Rat bzw. eine Lösung oder gar ein fertiges und funktionierendes ppm wüsste.
Auf jeden Fall vielen Dank im Voraus.
"Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird.
Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein." - F. Nietzsche