Andreas Korthaus: Probleme beim Kompilieren von PHP 4.3.0 --with-gd

Hallo!

Gegen PHP war das Kompilieren und konigurieren des Apachen ja ein Spaziergang ;-)

Habe die Frage auch in der [PHP-INST] mailing-Liste gestellt, aber bisher leider nur den Tipp erhalten "das man zumindest bei windows am besten die Libs mit ins PHP-Verzeichnis kopiert" Prima ;-) Vielleicht hat hier ja jemand eine Tipp, ich habe die Befürchtung das es ein problem mit dem gcc 3.2 Compiler von RedHat 8.0 gibt, aber zum Problem:

Ich bin jetzt halt schon etwas länger dabei zu versuchen PHP mit GD-Support zu kompilieren(PHP 4.3, RedHat Linux 8.0, gcc 3.2), was sich aber als sehr schwierig herausstellte.Ohne GD läuft PHP ganz ohne Probleme, nur mit scheitere ich bei make.

Mein Configure:

./configure --prefix=/usr/local/php-4.3.0 --with-gd --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-apxs2=/usr/local/apache-2.0.44/bin/apxs

Das funktioniert inzwichen prima, nachdem ich die bei RedHat beiligenden, Libs umbenannt habe, keien Ahnung wieso die das nicht direkt so machen:

cp libpng.so.3.1.2.2 libpng.so
cp libjpeg.so.62 ibjpeg.so

Danach funktioniert Configer zumindest.

Danach habe ich make versucht, aber da erhalte ich nur lauter Fehler, meist in Zusammenhang mit png, und da habe ich mal genauer nachgeguckt, in der configure.log, da sah es so aus als würde PHP denken es gcc wäre gcc2(zumindest steht in den Kommentaren öfter gcc2), aber gcc ist nunmal gcc3 auf meinem System. Vielleicht hat es ja was damit zu tun. Aber wie gesagt, ohne gd funktioniert alles auch mit gcc3 prima. Oder vielleicht ist libpng.so.3.1.2.2 ja doch nicht das richtige gewesen?! Mensch, woher soll man sowas alles wissen??? Ich habe ja auch libpng mal runtergeladen, aber da gibt es nichtmal configure und ich muß die makefile noch irgendwie selbst erstellen, - es geht immer noch komplizierter :-(

Ich habe die Ausgabe von make mal hochgeladen, vielleicht sagen Euch ja die Fehlermeldungen mehr als mir: http://knet-systems.de/temp/php_make.txt

Vielen Dank im voraus!

Grüße
Andreas

  1. Ich bin jetzt halt schon etwas länger dabei zu versuchen PHP mit GD-Support zu kompilieren(PHP 4.3, RedHat Linux 8.0, gcc 3.2), was sich aber als sehr schwierig herausstellte.Ohne GD läuft PHP ganz ohne Probleme, nur mit scheitere ich bei make.

    Danach habe ich make versucht, aber da erhalte ich nur lauter Fehler, meist in Zusammenhang mit png, und da habe ich mal genauer

    Ich sage mal, da steht's schwarz auf weiß:

    /root/php-4.3.0/ext/gd/libgd/gd_png.c:11:67: png.h: No such file or directory

    Offensichtlich sind Deine PNG-Dateien nicht vollständig. Bin kein C-Profi, aber ohne die Include-Dateien kannst Du keine Funktionsbibliothek in einem Programm nutzen - oder genauer gesagt: nutzen schon, aber das Programm lässt sich nicht übersetzen. Denn zum Übersetzen müssen Compiler und Linker wissen, wie die Bibliothek aussieht und funktioniert, und das wiederum steht in den Include-Dateien.

    Besorge Dir libpng und installiere das Paket korrekt (nicht nur die Bibliothek libpng.so). Ich meine mich zu erinnern, daß das eigentlich sogar recht problemlos war.

    Gruß,
      soenk.e

    1. Hallo Soenke!

      Ich sage mal, da steht's schwarz auf weiß:

      /root/php-4.3.0/ext/gd/libgd/gd_png.c:11:67: png.h: No such file or directory

      Das habe ich für einen Folgefehler gehalten

      Offensichtlich sind Deine PNG-Dateien nicht vollständig. Bin kein C-Profi, aber ohne die Include-Dateien kannst Du keine Funktionsbibliothek in einem Programm nutzen - oder genauer gesagt: nutzen schon, aber das Programm lässt sich nicht übersetzen. Denn zum Übersetzen müssen Compiler und Linker wissen, wie die Bibliothek aussieht und funktioniert, und das wiederum steht in den Include-Dateien.

      Hmmmmmm

      Besorge Dir libpng und installiere das Paket korrekt (nicht nur die Bibliothek libpng.so). Ich meine mich zu erinnern, daß das eigentlich sogar recht problemlos war.

      Och nö :-(
      Ich werds mal probieren, mit jpeg gings erstaunlich einfach, zwar nichz so wie ich es erwarte, aber das ging schon, bei png gibts kein configure, aber ich lese mal nach...

      Grüße
      Andreas

    2. Hallo nochmal!

      Besorge Dir libpng und installiere das Paket korrekt (nicht nur die Bibliothek libpng.so). Ich meine mich zu erinnern, daß das eigentlich sogar recht problemlos war.

      Danke Dir sehr, daran lags. Aber das war ne ganz schön wilde Geschichte. Es hat zwar funktioniert aber trotzdem will ich für mein Verständnis nochmal ein paar Fragen loswerden:

      Ich lade eine Anwendnung runter, in mein Home-Verzeichnis(/root). Dann entpacke ich diese in ein Verzeichnis(z.B. /root/php-4.3.0). Dann lasse ich configure laufen, und gebe als praefix das Verzeichnis an, wo die Anwnedung später liegen soll(./configure --praefix=/usr/local/php-4.3.0). Das hat soweit mit Apache und PHP funktioniert, nicht dagegen mit libjpeg, libpng und libz. Hierzu mußte ich das Archiv in den Ordner den ich eigentlich als praefix angeben würde kopieren(/usr/local), und alles direkt dort machen(entpacken in /usr/local/libpng-1.2.5), das heißt ich verwende configere, make, make install in demselben (auf dasselbe) Verzeichnis, wo das entpackte Archiv(source) liegt. Ist das richtig so?

      ich kann ja auch bei configure andere Systempfade für bin, lib, include... angeben, wie machst Ihr das? Ich habe jetzt der Übersicht halber, und da ich sowieso auch header-Dateien... brauchte die Anwendungen in je ein eigenes Verzeichnis unter /usr/local installiert, normalerweise werden ja die Datein(libs, confs, bins) in die entsorechenden Systempfade kopiert.

      Wie macht Ihr das? Bin da ganz neu und mir kommt irgendwie beides schlecht vor, bei ersterem bin ich von den Standars weg, bei letzterem werden die Dateien "wild" auf im Filesystem verteilt, und ich finde nichst mehr woeder, bzw. jhabe Probleme mit verschiedenen Versionen. Mich interessieren vor allem so Sachen woe zlib, libpng... wie handhabt Ihr das mit solchen Libs?

      Grüße
      Andreas

      1. Hallo Andreas,

        Wie macht Ihr das? Bin da ganz neu und mir kommt irgendwie beides schlecht vor, bei ersterem bin ich von den Standars weg, bei letzterem werden die Dateien "wild" auf im Filesystem verteilt, und ich finde nichst mehr woeder, bzw. jhabe Probleme mit verschiedenen Versionen. Mich interessieren vor allem so Sachen woe zlib, libpng... wie handhabt Ihr das mit solchen Libs?

        Du bist nicht der erste, der das Problem hatte.

        Das ist eindeutig ein Fall für GNU stow.
        http://www.gnu.org/software/stow/stow.html

        Christian

        --
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
      2. libjpeg, libpng und libz. Hierzu mußte ich das Archiv in den Ordner den ich eigentlich als praefix angeben würde kopieren(/usr/local), und alles direkt dort machen(entpacken in /usr/local/libpng-1.2.5), das heißt ich verwende configere, make, make install in demselben (auf dasselbe) Verzeichnis, wo das entpackte Archiv(source) liegt. Ist das richtig so?

        Kommt mir wahrscheinlich genauso merkwürdig vor wie Dir (s.u.).

        Wie macht Ihr das? Bin da ganz neu und mir kommt irgendwie beides schlecht vor, bei ersterem bin ich von den Standars weg, bei letzterem werden die Dateien "wild" auf im Filesystem verteilt, und ich finde nichst mehr woeder, bzw. jhabe Probleme mit verschiedenen Versionen. Mich interessieren vor allem so Sachen woe zlib, libpng... wie handhabt Ihr das mit solchen Libs?

        Es ist schon einige Monate her, daß ich meinen Linux-Ausprobier-Rechner aufgesetzt habe und komme jetzt im Moment auch nicht ran. Von daher kann ich leider nur soviel sagen: Meine Lib-Dateien liegen allesamt in den entsprechenden Systemverzeichnissen, zum Beispiel /usr/lib und /usr/include und ich könnte schwören, daß die da auch von alleine hingewandert sind - natürlich nach entsprechenden Angaben ("configure --prefix=/usr" oder Änderung im Makefile). Aber es lief in jedem Fall immer so wie es in den Readmes vorgegeben wurde, soll heißen: Ich kann mich nicht erinnern, da irgendwelche Schwierigkeiten oder sonst irgendein Durcheinander gehabt zu haben oder daß ich irgendwas einzeln von Hand kopieren musste.

        Ich benutze allerdings keine Distribution, sondern habe das System mit LFS (http://linuxfromscratch.org) selbst aufgesetzt. Vielleicht verhalten sich einige Sachen dort etwas anders - oder ich bin schlauer als ich denke ;)

        Falls dieser Thread Montag noch existiert, kann ich ja nochmal nachschauen.

        Gruß,
          soenk.e