[Image-SIG] Linking issues with 1.1.5 on x86_64

Nick Bower nick at nickbower.com
Thu May 18 07:37:17 CEST 2006


I've some experience building PIL, but for some reason JPEG and other decoders 
are not working for a particular architecture (FC4 on sun x86 opterons).  The 
build script reports JPEG support ok after I configure setup.py 
for /usr/lib64 and the build even seems to link correctly, but at runtime 
such actions as Image.open('test.jpg').save('x.jpg') report the well known 
"Module PIL.Image, line 328, in _getdecoder IOError: decoder jpeg not 
available"

--------------------------------------------------------------------
PIL 1.1.5 BUILD SUMMARY
--------------------------------------------------------------------
version       1.1.5
platform      linux2 2.4.3 (#1, Apr 11 2006, 08:14:37)
              [GCC 4.0.2 20051125 (Red Hat 4.0.2-8)]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--------------------------------------------------------------------


gcc -pthread -shared build/temp.linux-x86_64-2.4/_imaging.o 
build/temp.linux-x86_64-2.4/decode.o build/temp.linux-x86_64-2.4/encode.o 
build/temp.linux-x86_64-2.4/map.o build/temp.linux-x86_64-2.4/display.o 
build/temp.linux-x86_64-2.4/outline.o build/temp.linux-x86_64-2.4/path.o 
build/temp.linux-x86_64-2.4/libImaging/Access.o
[chop]
build/temp.linux-x86_64-2.4/libImaging/JpegDecode.o 
build/temp.linux-x86_64-2.4/libImaging/JpegEncode.o 
[chop]
-L/opt/ktstudio/python/python243/lib -L/usr/lib64 -L/usr/local/lib -L/usr/lib 
-ljpeg -lz -o build/lib.linux-x86_64-2.4/_imaging.so

# ldd Imaging-1.1.5/build/lib.linux-x86_64-2.4/_imaging.so
        libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00002aaaaabf5000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00002aaaaad17000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaaae4c000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaaaf62000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

# ls -l /usr/lib64/libjpeg.so.62*
lrwxrwxrwx  1 root root     17 Jan 11 00:28 /usr/lib/libjpeg.so.62 -> 
libjpeg.so.62.0.0
-rwxr-xr-x  1 root root 124696 Mar  3  2005 /usr/lib/libjpeg.so.62.0.0

The only thing that is different is that there are also 32 bit versions 
in /usr/lib.  Perhaps this would generate a conflict for the loader?

# ls -l /usr/lib/libjpeg*
lrwxrwxrwx  1 root root     17 Jan 11 00:28 /usr/lib/libjpeg.so.62 -> 
libjpeg.so.62.0.0
-rwxr-xr-x  1 root root 124696 Mar  3  2005 /usr/lib/libjpeg.so.62.0.0


More information about the Image-SIG mailing list