Mailing List Archive

Support open source code!


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RPM standalone, xv 3.10a, and DLLs



... that was Cool! it ran on Linux ...

After a bit of pulling and tugging, I got 'rpm' (the RedHat package
manager) to run on my Slackware/JE/miscellaneous system.  Sorry, I
forget exactly what pulling and tugging was involved; I seem to recall 
that I grabbed rpm-cpio, then had to get a newer version of cpio.  A
good place for GETTING-GNU-SOFTWARE (at least from Kanto and Tohoku
.ac.jp sites) is

     file://sunsite.sut.ac.jp/pub/archives/gnu/cpio-2.4.2.tar.gz

SunSite.SUT is not a particularly good place for Linux stuff, it only
mirrors sunsite.unc.edu, and seems to lag that by a bit (I seem to
recall that kernels 2.0.14 and 2.0.15 are out already, but SunSite.SUT
only has 2.0.13).  But the connection is FAST.

Next I grabbed a bunch of RPMs off the RedHat mirror on
ftp.lab.kdd.co.jp.  "This is great," I thought.  But then...
KA-CHUNGK:  xv barfed up

xv: can't load library 'libjpeg.so.5'

OK, so I need another DLL.  Hah!  Go ahead, find one.  (JWT is in fine
shape, maybe, there's a Czech site distributing Sparc libjpeg.sos in
RPM format).  I couldn't find it on either ftp.lab.kdd or even
ftp.redhat.com.  Archie didn't know nothing, neither did InfoSeek or
Alta Vista.  Alright, that Czech site had SRPMs for JPEG-6a (I've
already built the JPEG libs for Ghostscript, but I never built a
*shared* lib---supposed to be TAIhen).  But apparently the comments
are in Czech or something, and RPM didnae laik i' wan bit, Captan.

So I went to my source, and did "cp Makefile Makefile.so".  I added

libjpeg.so: $(LIBOBJS)
	$(RM) libjpeg.so
	$(LN) -o libjpeg.so -shared $(LIBOBJS)

and did "make -f Makefile.so libjpeg.so".  Then "cp libjpeg.so
/lib/libjpeg.so.6.1;ldconfig;xv" and xv barfed again.  OK, so I did
"ln -s libjpeg.so.6.1 /lib/libjpeg.so.5", and xv loaded!!!  And xv
displayed GIFs!!! and xv displayed XBMs!!! and xv exited with a fatal
error on a JPEG.  All my genki drained out.  But wait, here's a Clue.

xv: can't resolve symbol 'jpeg_create_decompress'

Trying nm on the .so, I got a reference to 'jpeg_CreateDecompress'.
That's right, JPEG-6 is not backward compatible; I remember that!  But
I don't have a copy of JPEG-5, so I gotta go get one.  ftp ... 
./configure ... mule Makefile.so ... make ... cp ... ldconfig ... xv
---and xv barfed again on the ld.so.  OK, so "ln -s libjpeg.so.5.1
/lib/libjpeg.so.5; ldconfig; xv" and Viola!

Does anybody know anything about making jump tables for ELF shared
libraries?  :-)

Hmm ... let's see, since nm works, maybe ...

Good grief, if the usual invocation to link 'djpeg' is

gcc  -o djpeg djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o \
        rdcolmap.o cdjpeg.o libjpeg.a

then

gcc  -o djpeg djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o \
        rdcolmap.o cdjpeg.o /lib/libjpeg.so.6

gives a working executable!  This is like magic!!!!  Note:

bash# ls -l djpeg*
-rwxr-xr-x   1 root     root        23520 Aug 29 13:35 djpeg
-rwxr-xr-x   1 root     root        93724 Aug 29 13:33 djpeg-static
-rw-r--r--   1 301      20          18736 Jan  8  1996 djpeg.c
-rw-r--r--   1 root     root        10656 Aug 29 13:30 djpeg.o

So libxxx.so can function as its own jump table.

What's the big deal about shared libs?  Did the move from COFF to ELF
really make it that easy, or is it something to do with making a
shared lib that you can distribute to other people?  I'm going to have
to see if I can build Ghostscript with shared JPEG, PNG, and Zlib
libs....

... Cool!  Linux works on anything! ....

Oh, by the way, xv 3.10a is neat, a big improvement in user interface
over 3.0.  :-)  If you're using a previous version of xv, it's worth
an upgrade.

-- 
                           Stephen John Turnbull
University of Tsukuba                                        Yaseppochi-Gumi
Institute of Policy and Planning Sciences  http://turnbull.sk.tsukuba.ac.jp/
Tennodai 1-1-1, Tsukuba, 305 JAPAN                 turnbull@example.com
-----------------------------------------------------------------
a word from the sponsor will appear below
-----------------------------------------------------------------
The TLUG mailing list is proudly sponsored by TWICS - Japan's First
Public-Access Internet System.  Now offering 20,000 yen/year flat
rate Internet access with no time charges.  Full line of corporate
Internet and intranet products are available.   info@example.com
Tel: 03-3351-5977   Fax: 03-3353-6096


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links