Frage zum kompilieren von PHP unter Unix (OSX)
AndreD
- php
Hallo zusammen,
Ich mache jetzt schon stundenlang rum und versuche mein aktuelles PHP auf der Kiste um weitere Module wie GDLib etc. zu erweitern. Dabei tritt nun nach der ./configure-Phase ein Fehler auf den ich mir nicht erklären kann und auch Google, sowie diverse Tutorials, Manuals und PHP-Boards helfen net weiter. Vielleicht weiss ja hier im Forum jemand einen Rat.
Ich habe bereits folgende Packages unter usr/local/ ausgepackt, kompiliert und installiert:
-> GDLib (sollte aber auch von der aktuellen PHP-Distrib. kommen?)
-> Freetype 2.1.9
-> zlib 1.2.1 (wäre -denke ich- auch schon eigentlich in PHP mit dabei?)
-> jpeg-6b
-> libpng
Der configure-Aufruf läuft ohne Fehlermeldung oder errors im logfile durch:
./configure powerpc-apple-darwin --with-zlib --with-gd --with-freetype-dir=/usr/local/lib --with-jpeg-dir --with-png-dir --with-config-file-path=/etc --enable-gd-native-ttf --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-versioning
Bei make dann irgendwann:
/usr/local/src/php-4.3.10/ext/gd/libgd/gd_jpeg.c:757: parse error before "cinfo"
/usr/local/src/php-4.3.10/ext/gd/libgd/gd_jpeg.c:764: `outfile' undeclared (first use in this function)
make: *** [ext/gd/libgd/gd_jpeg.lo] Error 1
Lasse ich die jpgLib weg, also:
./configure powerpc-apple-darwin --with-zlib --with-gd --with-freetype-dir=/usr/local/lib --with-png-dir --with-config-file-path=/etc --enable-gd-native-ttf --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-versioning
Dann kommt irgendwann bei make diese Meldung:
/usr/local/src/php-4.3.10/Zend/zend_strtod.c:1570: dereferencing pointer to incomplete type
/usr/local/src/php-4.3.10/Zend/zend_strtod.c:1571: dereferencing pointer to incomplete type
make: *** [Zend/zend_strtod.lo] Error 1
Bei beiden malen kommen übrigens dauernd während make irgendwelche Fehlermeldungen, so das es mich eigentlich auch nicht wirklich wundert das es nicht geht :-) Mangels Erfahrung kann ich leider nicht sagen ob des so gehört...
Vielleicht sollte ich doch mal die GDLib von aussen einbinden anstatt die von der PHP-Source zu nehmen. Konnte im web Fälle mit ähnlichen Meldungen beim kompilieren finden, leider aber keine passende Lösung für mich. Einer hat es ohne libpng und libjpg geschafft, jetzt werden halt keine Bilder bei ihm skaliert, damit könnte ich ja fürs erste Leben... der gleiche Versuch hat bei mir leider wieder nur eine Fehlermeldung verursacht :-(
Meine Frage: Hat jemand eine Idee was ich da machen kann? Mache ich evt. etwas Grundsätzliches falsch? *grübel*
Bin ECHT für jede Hilfe dankbar!
Danke mal & Gruß
AndreD
Hallo AndreD,
-> GDLib (sollte aber auch von der aktuellen PHP-Distrib. kommen?)
Wäre mir neu.
-> Freetype 2.1.9
-> zlib 1.2.1 (wäre -denke ich- auch schon eigentlich in PHP mit dabei?)
Wäre mir neu.
-> jpeg-6b
-> libpng
Der configure-Aufruf läuft ohne Fehlermeldung oder errors im logfile durch:
./configure powerpc-apple-darwin --with-zlib --with-gd --with-freetype-dir=/usr/local/lib --with-jpeg-dir --with-png-dir --with-config-file-path=/etc --enable-gd-native-ttf --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-versioning
Daran wird es vermutlich nicht liegen, aber ./configure --help stellt klar, das die Reihenfolge der Parameter so aus zu sehen hat:
Usage: configure [options] [host]
oder --host=powerpc-apple-darwin (aber allgemeinen ist diese in den Umgebungsvariablen bereits vorhanden und muß nicht angegeben werden)
--enable-sysvsem ist doppelt
make: *** [ext/gd/libgd/gd_jpeg.lo] Error 1
[...]
make: *** [Zend/zend_strtod.lo] Error 1
Das ist eine hin und wieder auftretende Erscheinung, wenn make bereits eimal ausgeführt wurde. Daher entpacke ich mir immer einmal das Archiv, kopiere das extrahierten Verzeichnis und führe ./configure - make - make install in der Verzeichniskopie aus. Läuft etwas schief, oder habe ich Angaben vergessen, hilft auch kein "make clean" ich lösche die Verzeichniskopie und kopiere erneut...
Vermutlich lassen sich dadurch die Errormeldungen von make umgehen. Wenn nicht, dann versuche Dir die neuste Version Deines Compilers zu besorgen.
Gruß aus Berlin!
eddi
Hi Eddy,
Danke erstmal für Deine flotte Antwort, ist ja um diese Uhrzeit sonntags nicht selbstverständlich ;-P
-> GDLib (sollte aber auch von der aktuellen PHP-Distrib. kommen?)
Wäre mir neu.
Mmhh, dann habe ich irgendwo entweder was falsches oder etwas falsch gelesen, dito bei zlib. Ich dachte das bestimmte, oft benötigte Libs schon mit der PHP-Distribution ausgeliefert werden. Ok, dann ist der Fehler vermutlich der, das der Kompiler eben *kein* GDLib und zlib gefunden hat?
Usage: configure [options] [host]
Ok, das werde ich beim nächsten Versuch ebenfalls berücksichtigen!
oder --host=powerpc-apple-darwin (aber allgemeinen ist diese in den Umgebungsvariablen bereits vorhanden und muß nicht angegeben werden)
Ja, normalerweise wurde der host bei den anderen Programmen erkannt und in ./configure entsprechend eingetragen. BTW habe ich mir die obere, falsche Notation von einem solchen Aufruf abgeschaut :-)
--enable-sysvsem ist doppelt
Danke, werde ich berücksichtigen...
[...] Daher entpacke ich mir immer einmal das Archiv, kopiere das extrahierten Verzeichnis und führe ./configure - make - make install in der Verzeichniskopie aus. Läuft etwas schief, oder habe ich Angaben vergessen, [...]
Gute Idee, das werde ich dann zukünftig auch so handhaben.
hilft auch kein "make clean" ich lösche die Verzeichniskopie und kopiere erneut...
Ach? Ich dachte das "make clean" den unmittelbaren Zustand nach ./configure wieder herstellt. Wie dem auch sei, ich denke das ich Deine Vorgehensweise übernehmen werde, dann bin ich auch auf der sicheren Seite.
Vermutlich lassen sich dadurch die Errormeldungen von make umgehen. Wenn nicht, dann versuche Dir die neuste Version Deines Compilers zu besorgen.
Gut, das werde ich machen wenn alles andere nix mehr hilft :-)
Also vielen Dank nochmal für Deine wirklich hilfreichen Tipps. Ich werde mich später hier im Forum nochmal melden wie es den ausschaut.
Danke & Gruß,
AndreD
Hallo nochmal,
Läuft immer noch nicht! GDLib lässt sich nicht kompilieren und bricht ständig mit irgendwelchen kryptischen Fehlermeldungen ab. Diese muss ich dann ergooglen und versuchen zu fixen. Im Moment findet sich dazu aber nix... Nach ./configure, das scheinbar ohne Probleme durchrattert, kommt folgende Auflistung:
** Configuration summary for gd 2.0.33:
Support for PNG library: yes
Support for JPEG library: no
Support for Freetype 2.x library: yes
Support for Fontconfig library: no
Support for Xpm library: no
Support for pthreads: yes
Kein Support für JPGLib, obwohl ich es auch installiert habe und wie in der Install-Anleitung auch die *.h-Dateien nach usr/local/include und die *.a in die /usr/local/libs kopiert habe...
Bei make steigt er dann irgendwann aus:
gcc -g -O2 -o .libs/gdparttopng gdparttopng.o -L/usr/local/lib -L/usr/local/lib/lib -L./.libs -lgd -lfreetype -lpng12 -lz
ld: warning -L: directory name (/usr/local/lib/lib) does not exist
ld: Undefined symbols:
_gdImagePng
make[1]: *** [gdparttopng] Error 1
make: *** [check-recursive] Error 1
Wenn man ein ranlib auf libjpeg.a anwendet ist nach der configure
Support for JPEG library: yes
gesetzt. D.h. es sollte nun verfügbar sein.
Leider steigt die Kiste bei make nach wie vor mit einer Fehlermeldung aus:
[...]
source='annotate.c' object='annotate.o' libtool=no \
DEPDIR=.deps depmode=gcc /bin/sh ./config/depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/local/include/freetype2 -I/usr/local/include -g -O2 -c annotate.c
/bin/sh ./libtool --mode=link gcc -g -O2 -L/usr/local/lib -L/usr/local/lib -o annotate annotate.o ./libgd.la -ljpeg -lfreetype -lpng12 -lz
gcc -g -O2 -o .libs/annotate annotate.o -L/usr/local/lib -L./.libs -lgd -ljpeg -lfreetype -lpng12 -lz
ld: Undefined symbols:
_gdImageCreateFromJpeg
_gdImageJpeg
make[2]: *** [annotate] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
Ich weiss das libjpeg standardmässig als "static" installiert wird wenn man nur configure ohne weitere Parameter nimmt. Ich dachte mir das dies der Fehler sein könnte und libjpeg auch als "shared" installiert werden sollte.
Also habe ich bei Sourcen nochmal frisch überbügelt und in libjpeg ein ./configure --enable-shared gestartet... blieb dann aber wie folgt hängen:
[...]
checking for ranlib... ranlib
checking host system type... ltconfig: cannot guess host type; you must specify one
Try `ltconfig --help' for more information.
checking libjpeg version number... 62
creating ./config.status
creating Makefile
creating jconfig.h
Tja, und nu is wieder Ende Gelände und ich hab mal wieder keinen Plan was das Problem sein könnte. Google hat zu dem Thema leider auch nix gescheites gewusst...
Ich stecks jetzt mal fürs erste und hoffe das mir hier jemand im Forum oder sonstwo eine wenig auf die Sprünge helfen kann.... *frustschieb*
Gruß AndreD