[alsa-devel] ALSA hooks: dlopen failed: snd_dlsym_start: symbol not found

Jörg Krause joerg.krause at embedded.rocks
Fri Aug 26 04:11:08 CEST 2016


Hi,

I am trying to build a custom hook library. The minimal hook is:

    #include <alsa/asoundlib.h>

    int _snd_pcm_hook_audio_status_install(snd_pcm_t *pcm, snd_config_t
    *conf)
    {
    	    return 0;
    }
    SND_DLSYM_BUILD_VERSION(_snd_pcm_hook_audio_status_install,
    SND_CONFIG_DLSYM_VERSION_HOOK);

I compile this as a shared library:

    $(CC) -fPIC -lasound -shared -Wl,-soname,lib$(NAME).so $^ -o $@

If I try to load this library using aplay I get the following error:

    dlopen failed: Error relocating /usr/lib/alsa-lib/libaudiostatus.so: 
    snd_dlsym_start: symbol not found

This is the output of the preprocessor:

    int _snd_pcm_hook_audio_status_install(snd_pcm_t *pcm, snd_config_t
    *conf)
    {
     return 0;
    }
    static struct snd_dlsym_link
    _snd_dlsym__snd_pcm_hook_audio_status_install_dlsym_config_hook_001;
    void
    _snd_dlsym_constructor__snd_pcm_hook_audio_status_install_dlsym_conf
    ig_hook_001 (void) __attribute__ ((constructor));
    void
    _snd_dlsym_constructor__snd_pcm_hook_audio_status_install_dlsym_conf
    ig_hook_001 (void) {
    	    _snd_dlsym__snd_pcm_hook_audio_status_install_dlsym_config_hook
    _001.next = snd_dlsym_start;
    	    _snd_dlsym__snd_pcm_hook_audio_status_install_dlsym_config_hook
    _001.dlsym_name = "_snd_pcm_hook_audio_status_install";
    	    _snd_dlsym__snd_pcm_hook_audio_status_install_dlsym_config_hook
    _001.dlsym_ptr = (void *)&_snd_pcm_hook_audio_status_install;
    	    snd_dlsym_start =
    &_snd_dlsym__snd_pcm_hook_audio_status_install_dlsym_config_hook_001
    ;
    };

What do I miss?

Best regards
Jörg Krause




More information about the Alsa-devel mailing list