[Pkg-alsa-devel] Bug#522544: libasound2-dev: Statically linking libasound.a does not work

Samuel Thibault samuel.thibault at ens-lyon.org
Sat Apr 4 17:52:07 UTC 2009


Package: libasound2-dev
Version: 1.0.19-1
Severity: normal

Hello,

So as to include sound support in the debian installer for speech
synthesis support but save space, I am trying to link libasound.a
statically.  This however does not work: at runtime,
snd_dlsym("_snd_ctl_hw_open") fails, and indeed

$ nm /usr/lib/libasound.a  | grep _snd_ctl_hw_open
0000000000000001 C __snd_ctl_hw_open_dlsym_control_001
00000000000007a0 T _snd_ctl_hw_open

The _snd_dlsym_constructor__snd_ctl_hw_open_dlsym_control_001
constructor that adds the symlink does not exist.  That is because of
the way things are built, see this exerpt of the buildd log:

/bin/sh ../../libtool --tag=CC   --mode=compile gcc -m32 -DHAVE_CONFIG_H -I. -I../../../src/control -I../../include -I../../../include    -g -Wall -O2 -MT control_hw.lo -MD -MP -MF .deps/control_hw.Tpo -c -o control_hw.lo ../../../src/control/control_hw.c
 gcc -m32 -DHAVE_CONFIG_H -I. -I../../../src/control -I../../include -I../../../include -g -Wall -O2 -MT control_hw.lo -MD -MP -MF .deps/control_hw.Tpo -c ../../../src/control/control_hw.c  -fPIC -DPIC -o .libs/control_hw.o
 gcc -m32 -DHAVE_CONFIG_H -I. -I../../../src/control -I../../include -I../../../include -g -Wall -O2 -MT control_hw.lo -MD -MP -MF .deps/control_hw.Tpo -c ../../../src/control/control_hw.c -o control_hw.o >/dev/null 2>&1
mv -f .deps/control_hw.Tpo .deps/control_hw.Plo

...

/bin/sh ../../libtool --tag=CC   --mode=link gcc -m32  -g -Wall -O2   -o libcontrol.la  cards.lo tlv.lo namehint.lo hcontrol.lo control.lo control_hw.lo setup.lo control_symbols.lo control_shm.lo control_ext.lo
ar cru .libs/libcontrol.a .libs/cards.o .libs/tlv.o .libs/namehint.o .libs/hcontrol.o .libs/control.o .libs/control_hw.o .libs/setup.o .libs/control_symbols.o .libs/control_shm.o .libs/control_ext.o
ranlib .libs/libcontrol.a
creating libcontrol.la

The non-PIC object is built but there no .a including is built.  Later on, the creation of libasound.a:

rm -fr .libs/libasound.lax/libcontrol.a
mkdir .libs/libasound.lax/libcontrol.a
(cd .libs/libasound.lax/libcontrol.a && ar x /build/buildd/alsa-lib-1.0.19/bibuild/src/control/.libs/libcontrol.a)

ar cru .libs/libasound.a  conf.o confmisc.o input.o output.o async.o error.o dlmisc.o socket.o shmarea.o userfile.o names.o  .libs/libasound.lax/libcontrol.a/namehint.o .libs/libasound.lax/libcontrol.a/control_symbols.o .libs/libasound.lax/libcontrol.a/control_shm.o .libs/libasound.lax/libcontrol.a/tlv.o .libs/libasound.lax/libcontrol.a/setup.o .libs/libasound.lax/libcontrol.a/control_hw.o .libs/libasound.lax/libcontrol.a/cards.o .libs/libasound.lax/libcontrol.a/hcontrol.o .libs/libasound.lax/libcontrol.a/control_ext.o .libs/libasound.lax/libcontrol.a/control.o  .libs/libasound.lax/libmixer.a/simple_abst.o .libs/libasound.lax/libmixer.a/simple.o .libs/libasound.lax/libmixer.a/mixer.o .libs/libasound.lax/libmixer.a/simple_none.o .libs/libasound.lax/libmixer.a/bag.o  .libs/libasound.lax/libpcm.a/pcm_empty.o .libs/libasound.lax/libpcm.a/pcm_multi.o .libs/libasound.lax/libpcm.a/pcm_generic.o .libs/libasound.lax/libpcm.a/pcm_hw.o .libs/libasound.lax/libpcm.a/pcm_route.o .libs/libasound.lax/libpcm.a/pcm_symbols.o .libs/libasound.lax/libpcm.a/interval.o .libs/libasound.lax/libpcm.a/pcm_copy.o .libs/libasound.lax/libpcm.a/pcm_extplug.o .libs/libasound.lax/libpcm.a/pcm_null.o .libs/libasound.lax/libpcm.a/pcm_simple.o .libs/libasound.lax/libpcm.a/pcm_rate.o .libs/libasound.lax/libpcm.a/pcm_plugin.o .libs/libasound.lax/libpcm.a/pcm_ioplug.o .libs/libasound.lax/libpcm.a/pcm_mulaw.o .libs/libasound.lax/libpcm.a/pcm_iec958.o .libs/libasound.lax/libpcm.a/pcm_file.o .libs/libasound.lax/libpcm.a/pcm_linear.o .libs/libasound.lax/libpcm.a/pcm_misc.o .libs/libasound.lax/libpcm.a/pcm_lfloat.o .libs/libasound.lax/libpcm.a/pcm_asym.o .libs/libasound.lax/libpcm.a/pcm_dmix.o .libs/libasound.lax/libpcm.a/pcm_params.o .libs/libasound.lax/libpcm.a/pcm_hooks.o .libs/libasound.lax/libpcm.a/pcm_shm.o .libs/libasound.lax/libpcm.a/pcm_rate_linear.o .libs/libasound.lax/libpcm.a/atomic.o .libs/libasound.lax/libpcm.a/pcm.o .libs/libasound.lax/libpcm.a/pcm_softvol.o .libs/libasound.lax/libpcm.a/pcm_direct.o .libs/libasound.lax/libpcm.a/pcm_ladspa.o .libs/libasound.lax/libpcm.a/pcm_mmap.o .libs/libasound.lax/libpcm.a/pcm_dshare.o .libs/libasound.lax/libpcm.a/mask.o .libs/libasound.lax/libpcm.a/pcm_meter.o .libs/libasound.lax/libpcm.a/pcm_alaw.o .libs/libasound.lax/libpcm.a/pcm_mmap_emul.o .libs/libasound.lax/libpcm.a/pcm_share.o .libs/libasound.lax/libpcm.a/pcm_adpcm.o .libs/libasound.lax/libpcm.a/pcm_plug.o .libs/libasound.lax/libpcm.a/pcm_dsnoop.o  .libs/libasound.lax/libtimer.a/timer_symbols.o .libs/libasound.lax/libtimer.a/timer_query_hw.o .libs/libasound.lax/libtimer.a/timer.o .libs/libasound.lax/libtimer.a/timer_hw.o .libs/libasound.lax/libtimer.a/timer_query.o  .libs/libasound.lax/librawmidi.a/rawmidi.o .libs/libasound.lax/librawmidi.a/rawmidi_hw.o .libs/libasound.lax/librawmidi.a/rawmidi_symbols.o .libs/libasound.lax/librawmidi.a/rawmidi_virt.o  .libs/libasound.lax/libhwdep.a/hwdep_symbols.o .libs/libasound.lax/libhwdep.a/hwdep_hw.o .libs/libasound.lax/libhwdep.a/hwdep.o  .libs/libasound.lax/libseq.a/seq.o .libs/libasound.lax/libseq.a/seq_midi_event.o .libs/libasound.lax/libseq.a/seq_hw.o .libs/libasound.lax/libseq.a/seq_symbols.o .libs/libasound.lax/libseq.a/seq_event.o .libs/libasound.lax/libseq.a/seqmid.o .libs/libasound.lax/libseq.a/seq_old.o  .libs/libasound.lax/libalisp.a/alisp.o  .libs/libasound.lax/libcompat.a/empty.o
ranlib .libs/libasound.a
rm -fr .libs/libasound.lax
creating libasound.la

uses the PIC-compiled object, not the non-PIC-compiled one, thus the
non-existence of the constructor.

I'm far from at ease with libtool, is that a know bug, or perhaps a
missing bit in the alsa-lib Makefile.am?

Samuel

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.29 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libasound2-dev depends on:
ii  libasound2                    1.0.19-1   shared library for ALSA applicatio
ii  libc6-dev [libc-dev]          2.9-4      GNU C Library: Development Librari

libasound2-dev recommends no packages.

Versions of packages libasound2-dev suggests:
pn  libasound2-doc                <none>     (no description available)

-- no debconf information

-- 
Samuel
 Cliquez sur le lien qui suit dans ce mail...vous n'avez plus qu'a vous
 inscrire pour gagner de l'argent en restant connecte....et puis faites
 passer le message et vous gagnerez encore plus d'argent ...
 -+- AC in NPC : Neuneu a rencontré le Pere Noël -+-





More information about the Pkg-alsa-devel mailing list