• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Problem mit libjpeg.so beim kompilieren von PHP

hankie

Newbie
Hallo,
sitze schon lange an einem problem und nach ewiger suche und rumprobieren wende ich mich hoffnungsvoll an Euch.

Habe das Problem, dass in meiner phpinfo bei GD kein jpeg gelistet wird und ich keine jpegs bearbeiten kann. Bei 32bit lief noch alles bestens, jetzt, bei 64 bit hab ich probleme.
GD 2.0.28 ist installiert. Alle anderen Formate (gif, png) funktionieren.
Habe zuletzt libjpeg-devel-64bit-6.2.0-16, libjpeg-64bit-6.2.0-750 und jpeg-v6b installiert.

configure für php:


Code:
./configure --with-libdir=lib64 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-xml --with-libxml --enable-xml --with-dom --enable-track-vars --enable-ftp --enable-mbstring --with-jpeg-dir --with-gd --with-zlib-dir=/usr/lib

erhalte ich folgene Meldung bei make:
Code:
/usr/lib64/libjpeg.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

Die datei ist da, was ist sein problem?

Habe zig Varianten für Pfadangaben bei --with-jpeg-dir probiert.. nix.

Habe beim googeln und bei der suche nicht wirklich was hilfreiches grfunden, glaubt mir.
Steck in der ganzen materie auch noch nicht lang drin.

suse 10.1
php 5.1.4
GD 2.0.28
64 bit

hoffe ich hab an alles gedacht und hoffe auf hilfe,

gruß,
hankie
 

Leviathan

Hacker
Prüf doch mal ob die lib auch 64 ist.
Bie mir (32 bit) guckts so aus. Anonsten ggf. libjpeg neu kompilieren?

/usr/lib> file libjpeg.so.62.0.0
libjpeg.so.62.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
 

panamajo

Guru
hankie schrieb:
Code:
[...] --with-jpeg-dir --with-zlib-dir=/usr/lib
--with-jpeg-dir ohne Pfadangabe ist witzlos, denn damit soll ja gerade der Pfad angegeben werden falls dieser vom Default abweicht.
Und gegen die 32bit Version der zlib wirst du bei einer 64bit Version von PHP nicht linken wollen.

hankie schrieb:
Code:
/usr/lib64/libjpeg.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

Die datei ist da, was ist sein problem?

Steht doch da: "File in wrong format". Die Datei wird also gefunden und für unbrauchbar befunden.
Die libjpeg-devel-6.2.0-16 funktioniert hier ohne Probleme.
hankie schrieb:
Habe zig Varianten für Pfadangaben bei --with-jpeg-dir probiert.. nix.
Für x86_64 ist die korrekte Pfadangabe zum linken gegen die aus dem SuSE rpm installierte libjpeg
Code:
 --with-jpeg-dir=/usr

hankie schrieb:
Wieso versuchst du eine alte PHP Version von Hand zu compilieren? Aktuell und empfohlen ist PHP 5.2.0, wenn du dir schon die Mühe machst dann sollte auch was bei rauskommen können.
 
OP
H

hankie

Newbie
Danke euch beiden für die schnelle antwort.
Komme wohl morgen erst dazu eure vorschläge umzusetzen.
Werde mich dann wieder melden! !

gruß,
hankie
 
OP
H

hankie

Newbie
Hallo,

habe eine 64Bit Versionen von libjpeg.so, libjpeg.so.62 und libjpeg.so.62.0.0 in

/usr/lib64 und /usr/local/lib

Die 32Bit Versionen habe ich umbenannt.

meine php configure:
Code:
./configure --with-libdir=lib64 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-xml --with-libxml --enable-xml --with-dom --enable-track-vars --enable-ftp --enable-mbstring --with-gd --with-jpeg-dir=/usr --with-zlib-dir=/usr

Fehlermeldung nach make:
Code:
/usr/lib64/libjpeg.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

Auch --with-jpeg-dir=/usr/lib64 brachte das selbe Ergebnis

Du sagtest die: libjpeg-devel-6.2.0-16 funktioniert hier ohne Probleme.
Was meinst du mit hier und könnte mir die weiterhelfen?

Bin für jede Hilfe dankbar!
Gruß, Hankie
 

panamajo

Guru
hankie schrieb:
habe eine 64Bit Versionen von libjpeg.so, libjpeg.so.62 und libjpeg.so.62.0.0
Von den Namen her könnten das die Libs aus libjpeg[-devel] sein, aber das solltest du besser wissen...

hankie schrieb:
/usr/lib64 und /usr/local/lib
Wenn irgendwas relevantes in /usr/local für die COmpilierung vorliegt dann sollten die libs gefälligst in lib64 liegen. Du kannst nicht gleichzeitig gegen 32 und 64 bit Libs linken!

hankie schrieb:
Die 32Bit Versionen habe ich umbenannt.
Was nichts daran ändert dass es 32 bit Versionen bleiben (und das umbenennen bei korrekter Installation auch nicht nötig ist, denn die liegen nicht in einem lib64 Verzeichniss).

hankie schrieb:
Du sagtest die: libjpeg-devel-6.2.0-16 funktioniert hier ohne Probleme.
Was meinst du mit hier und könnte mir die weiterhelfen?

Nein, die hier kann dir nicht weiterhelfen.
"Hier" bezieht sich auf ein funktionierendes x86_64 System, auf dem PHP5.2.0 compiliert und gegen die libjepeg aus o.g. SuSE Paket gelinkt wurde.

Nochmal: wenn der Linker (ld) sagt:"could not read symbols: File in wrong format" dann ist das Problem nicht dass er die Lib nicht findet sondern mit der Datei nichts anfangen kann.

Vergleiche mal folgende Ausgaben mit deiner Maschine:

Code:
jo@codered:~> l /usr/lib64/libjpeg.so*
lrwxrwxrwx 1 root root     17 Jul 27 16:00 /usr/lib64/libjpeg.so -> libjpeg.so.62.0.0*
lrwxrwxrwx 1 root root     17 Jul 27 16:00 /usr/lib64/libjpeg.so.62 -> libjpeg.so.62.0.0*
-rwxr-xr-x 1 root root 138072 Apr 23  2006 /usr/lib64/libjpeg.so.62.0.0*
jo@codered:~> file /usr/lib64/libjpeg.so.62.0.0
/usr/lib64/libjpeg.so.62.0.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped
jo@codered:~> ldd /usr/lib64/libjpeg.so.62.0.0
        libc.so.6 => /lib64/libc.so.6 (0x00002b2dbfcd9000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
 
OP
H

hankie

Newbie
moin panamajo,

danke für die antwort.
Ich will hier nix besser wissen, garantiert nicht. Versteh eh nur die hälfte von deinen antworten. Wenn ich hier mist bau, dann nur, weil ich das teilweise echt nicht raff.

Hier das ergebnis von dem was ich vergleiche sollte:
Code:
linux5:/ # l /usr/lib64/libjpeg.so*
lrwxrwxrwx 1 root root     17 Nov  7 17:27 /usr/lib64/libjpeg.so -> libjpeg.so.62.0.0*
lrwxrwxrwx 1 root root     17 Nov  7 17:26 /usr/lib64/libjpeg.so.62 -> libjpeg.so.62.0.0*
-rwxr-xr-x 1 root root 202160 Apr 23  2006 /usr/lib64/libjpeg.so.62.0.0*
linux5:/ # file /usr/lib64/libjpeg.so.62.0.0
/usr/lib64/libjpeg.so.62.0.0: ELF 64-bit MSB shared object, cisco 7500, version 1 (SYSV), stripped
linux5:/ # ldd /usr/lib64/libjpeg.so.62.0.0
        not a dynamic executable

Auch dieser vergleich bringt mich nicht wirklich weiter. Ich sehe den ort der datei, die verlinkung und welche bit-version. Denke das letzte soll zeigen welche libarys von libjpeg gebraucht werden und ob die richtig liegen? :oops:

Hoffe du kannst was damit anfangen.
Gruß
 

panamajo

Guru
hankie schrieb:
Code:
linux5:/ # file /usr/lib64/libjpeg.so.62.0.0
/usr/lib64/libjpeg.so.62.0.0: ELF 64-bit MSB shared object, cisco 7500, version 1 (SYSV), stripped

Cisco? Was für einen Rechner hast du denn da überhaupt, was sagt
Code:
$ uname -a
 
OP
H

hankie

Newbie
Code:
linux5:/ # uname -a
Linux linux5 2.6.16.13-4-smp #1 SMP Wed May 3 04:53:23 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux
 

panamajo

Guru
hankie schrieb:
Code:
linux5:/ # uname -a
Linux linux5 2.6.16.13-4-smp #1 SMP Wed May 3 04:53:23 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux

Und warum installierst du auf einem x86_64 eine Lib für Cisco blablabla?

Die installierten Libs sind für eine andere Arch gedacht, damit kann der Linker nix anfangen.

Installiere libjpeg[-devel] für deine Distribution, 64 bit.
 
OP
H

hankie

Newbie
moin,

mit dem jpeg-support haut jetzt alles hin.
Für die, die es interessiert:

Habe mittels yast alles an jpeg gelöscht was sich auf 32bit bezieht.
PHP mit meiner zuletzt geposteten configure kompiliert und soweit ich
das jetzt testen konnte haut alles hin.

danke für eure hilfe und gruß,
hankie
 
Oben