Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SDL: Locate shared libraries

17 views
Skip to first unread message

Adam Warner

unread,
Nov 16, 2004, 5:05:43 AM11/16/04
to perl6-i...@perl.org
Hello again,

x86 Debian sid with the SDL libraries installed:

libsdl-image1.2 1.2.3-5 image loading library for Simple DirectMedia Layer 1.2
libsdl-ttf2.0-0 2.0.6-5 ttf library for Simple DirectMedia Layer with FreeType
libsdl1.2debian 1.2.7-10 Simple DirectMedia Layer
libsdl1.2debian-all 1.2.7-10 Simple DirectMedia Layer (with all available options)

The libraries are located in /usr/lib/:

/usr/lib/libSDL-1.2.so.0.7.0
/usr/lib/libSDL-1.2.so.0
/usr/lib/libSDL_image-1.2.so.0.1.2
/usr/lib/libSDL_image-1.2.so.0
/usr/lib/libSDL_ttf-2.0.so.0
/usr/lib/libSDL_ttf-2.0.so.0.6.0

$ ./parrot examples/sdl/lcd/clock.imc
Couldn't load 'libSDL': libSDL: cannot open shared object file: No such file or directory
Couldn't load 'libSDL_image': libSDL_image: cannot open shared object file: No such file or directory
Couldn't load 'libSDL_ttf': libSDL_ttf: cannot open shared object file: No such file or directory
Couldn't load 'libSDL': libSDL: cannot open shared object file: No such file or directory
Segmentation fault

In runtime/parrot/library/SDL.imc I replaced the respective loadlibs with:

loadlib libsdl, 'libSDL-1.2.so.0'
loadlib image_lib, 'libSDL_image-1.2.so.0'
loadlib ttf_lib, 'libSDL_ttf-2.0.so.0'

And it worked! (w/warning: SDL::fetch_layout warning: layout 'Pixels' not found!)

At this stage of development is parrot supposed to automatically locate
the shared libraries?

Thanks,
Adam

Leopold Toetsch

unread,
Nov 16, 2004, 5:57:00 AM11/16/04
to Adam Warner, perl6-i...@perl.org
Adam Warner wrote:
> Hello again,
>
> x86 Debian sid with the SDL libraries installed:

> In runtime/parrot/library/SDL.imc I replaced the respective loadlibs with:
>
> loadlib libsdl, 'libSDL-1.2.so.0'

That's not a general solution, as it makes explicit system-dependent
assumptions on filenames.

I've added explicit symlinks - it looks like a debian problem (missing
link to .so):

$ locate libSDL_image
/usr/lib/libSDL_image-1.2.so.0
/usr/lib/libSDL_image-1.2.so.0.1.2
/usr/lib/libSDL_image.so

$ ls -l $(locate libSDL_image.so)
... /usr/lib/libSDL_image.so -> libSDL_image-1.2.so.0

(for all these libs)

> And it worked! (w/warning: SDL::fetch_layout warning: layout 'Pixels' not found!)

Yep.

> At this stage of development is parrot supposed to automatically locate
> the shared libraries?

If they are named properly and are located in either
runtime/parrot/dynext/ or in a location that the loader searches - yes.

> Thanks,
> Adam

leo

0 new messages