Hallo Liste, ich habe ein Problem, das zwar nicht mit Programmierung zu tun hat, aber mit Kompilierung und ich hoffe, da bin ich hier an einer ganz guten Adresse. Ich versuche, in mein PHP-Modul für den Apachen die Imap-Funktionen einzukompilieren, aber das klappt nicht. PHP hab ich in den 4.3.9- Sourcen und ohne Imap-Support lassen sie sich prima zusammenbauen. Imap hab ich in Version 2004a. Die Kompilierung von Imap an sich hat auch geklappt, aber ich bekomme kein .so-Modul aus Imap, sondern nur eine statische .a-Version. Nun brauche ich für PHP aber das .so- Modul, ansonsten scheitert es, ein PHP-so-Modul zu bauen (und PHP brauch ich als shared object, weil es sich ansonsten nicht vom Apachen ansprechen lässt). Die entsprechende Warnung von make (configure läuft einwandfrei durch) sieht dann so aus: *** Warning: linker path does not have real file for library -lc- client. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have *** because I did check the linker path looking for a file starting *** with libc-client and none of the candidates passed a file format test *** using a file magic. Last file checked: /usr/lib/libc-client.a *** Warning: libtool could not satisfy all declared inter-library *** dependencies of module libphp4. Therefore, libtool will create *** a static module, that should work as long as the dlopening *** application is linked with the -dlopen flag. Ich habe schon versucht, mir rpm-Pakete mit libc-client.so zu organisieren (Version 2002e), aber die führen zu einer Fehlermeldung (unabhängig von der Imap-Version, ich hab es auch mit einer selbst gebauten Version 2002e versucht). Diese Fehlermeldung taucht manchmal schon beim configure auf (immer dann, wenn ich --with-imap=/usr angebe; da liegen die .so-Dateien aus dem rpm). Er meldet mir dann, dass Imap nicht funktioniert. Den gleichen Effekt hab ich interessanterweise, wenn ich die .so-Dateien in den Ordner kopiere, in dem ich Imap kompiliert habe. Wenn die .so-Libs nicht im angesprochenen Ordner, sondern nur im LD- Pfad liegen, dann endet make mit folgender Fehlermeldung: /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../x86_64-suse- linux/bin/ld: /usr/local/imap/lib/libc-client.a(osdep.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/local/imap/lib/libc-client.a: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [libphp4.la] Error 1 Wie daraus ersichtlich ist, arbeite ich auf ner 64bit-Kiste. Als OS hab ich da SuSE 9.1 Pro laufen. Ich bin inzwischen ziemlich ratlos, woran das liegen könnte, viel Gegoogel hat mir auch nicht weitergeholfen :-( Vielleicht weiss ja jemand von euch einen Tipp - wäre sehr schön, wenn mir jemand weiterhelfen könnte. Vielen Dank schonmal und viele Grüße Oliver
participants (1)
-
Oliver Marahrens