Re: [LAU] [ANN] Drumstick 0.5.0 released

From: Pedro Lopez-Cabanillas <pedro.lopez.cabanillas@email-addr-hidden>
Date: Thu Sep 09 2010 - 21:20:59 EEST

On Thursday 09 September 2010, Niels Mayer wrote:
> Thanks for making this update available. All your programs are very nice.

You are very kind.

> One issue I've had w/ drumstick, perhaps ever since I installed kmid
> (*), is that when I "sudo make install", I end up with binaries that
> don't work:
>
> gnulem-301-.../drumstick-svn/build> /usr/local/bin/drumstick-testevents
> /usr/local/bin/drumstick-testevents: error while loading shared
> libraries: libdrumstick-alsa.so.0: cannot open shared object file: No
> such file or directory
>
> However, using the just built binary "in place" works fine:

You may be experiencing issues related to RPATH. The build system has this
feature (that I use in my projects) to link executables to libraries including
the whole library path into each executable. This is very convenient when you
are developing libraries and test programs together, because it allows you to
test the programs in place without installing them and without worrying about
environment variables like "LD_LIBRARY_PATH". CMake creates a "make install"
command that shall relink the executables dropping the rpaths, so in a
production environment the programs behave as usual. More about this, here:
http://www.vtk.org/Wiki/CMake_RPATH_handling

To test if a program has RPATHs, use a command like this:
$ ldd /usr/local/bin/drumstick-playsmf
        linux-gate.so.1 => (0xffffe000)
        libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb7498000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb73bc000)
        libdrumstick-alsa.so.0 => /usr/local/lib/libdrumstick-alsa.so.0
(0xb735e000)
        libdrumstick-file.so.0 => /usr/local/lib/libdrumstick-file.so.0
(0xb730c000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb721b000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb71fd000)
        libc.so.6 => /lib/libc.so.6 (0xb7092000)
        [...]

The above output shows a program that is installed without RPATH. The same
command on a program in my development directory shows this:

$ ldd build/bin/drumstick-playsmf
        linux-gate.so.1 => (0xffffe000)
        libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb7602000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb7526000)
        libdrumstick-alsa.so.0 =>
/home/pedro/Projects/drumstick/build/lib/libdrumstick-alsa.so.0 (0xb74c8000)
        libdrumstick-file.so.0 =>
/home/pedro/Projects/drumstick/build/lib/libdrumstick-file.so.0 (0xb7476000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7385000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7367000)
        libc.so.6 => /lib/libc.so.6 (0xb71fc000)
        [...]

The distro's packaging process already takes care of all this. You can use
these features for your own convenience, but my advice is to clean your system
and install all the programs from the distro repositories, or install from
sources but use a recent cmake version and read the documentation about the
different options and features available. If you are unsure: uninstall the old
versions before compiling a new drumstick release, and uninstall the libraries
that are producing errors when running ldconfig.

Regards,
Pedro
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Fri Sep 10 00:15:04 2010

This archive was generated by hypermail 2.1.8 : Fri Sep 10 2010 - 00:15:04 EEST