[LAU] [ANN] Drumstick 0.5.0 released

Pedro Lopez-Cabanillas pedro.lopez.cabanillas at gmail.com
Thu Sep 9 18:20:59 UTC 2010


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


More information about the Linux-audio-user mailing list