Hi Takashi, I have just tried the patch you provided me. I applied the patch and then I configured alsa-lib as following: ./configure --enable-static --disable-shared --disable-mixer --disable-hwdep --disable-rawmidi --disable-seq --disable-instr --disable-alisp --with-pcm-plugins=no --with-libdl=no --with-pthread=no The compilation works fine, ant the static library is created. When I try to link my application to it, I get the following warning: ~/alsa $ gcc -Wall -O2 -o test test.c -L/tmp/alsa-lib-hg20070317/src/.libs/ -lasound -static /tmp/alsa-lib-hg20070317/src/.libs/libasound.a(control_shm.o): In function `_snd_ctl_shm_open': /tmp/alsa-lib-hg20070317/src/control/control_shm.c:664: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking I think we are getting closer, but I could not figure out how to exclude this from the compilation. The file control_shm.c contains only few macro #IFDEFS, and none for it. Takashi, could you tell me why/when the pthread lib is needed? Do I need it for PCM, or is it used just for MIDI? Last but not least, the ./configure --help does not give information about the the new switches (--with-libdl=no --with-pthread=no), shouldn't they be visible in the "help" page? Thanks again, Bye bye Andrea --- Takashi Iwai <tiwai@xxxxxxx> wrote: > At Tue, 20 Mar 2007 08:13:41 -0700 (PDT), > Ciaccia wrote: > > > > Hi Takashi, > > It's clear that the concept of dynamic loading > doesn't > > conflict with static library, I think my original > > question was not completely clear. > > > > I would like to port a sound application (just > PCM, no > > midi or other stuff) to an embedded system. The > core > > of this embedded system is a Cirrus EP9302 ARM > > processor, which supports hardware floating > points. > > > > ARM processors have several ABIs (EABI, OABI, ???) > and > > programs compiled using one ABI are not linkable > > (neither at compile time, nor at run time) with > other > > binaries, because of the different format. This is > a > > problem for binary distributions (such as Debian), > > since the same binary does not work on all ARM > > architectures. > > > > For a reason I really don't understand, EP9302 > > hardware floating point binaries only work when > > compiled with -static (don't ask me why...), and > > therefore I wanted to have a "static" (=without > shared > > libraries) ALSA application. If this would not be > > possible I can always use OSS (which does not > requires > > shared objects to be loaded at run time), but I > still > > think it should be possible to develop ALSA > > applications for architectures where dynamic > loading > > is not available... > > > > Is there a way to achieve this? > > Sure, what I meant is that the patch had no function > to disable the > libdl and libpthread explicitly but only checked. > The new patch > below, for example, can give you options > --with-libdl and > --with-pthread. For disabling libdl, pass > --with-libdl=no. > > If this works for you, I'll apply it to the > upstream. > > > Takashi > > > diff -r 6d0a999aef24 Makefile.am > --- a/Makefile.am Fri Mar 16 15:22:27 2007 +0100 > +++ b/Makefile.am Tue Mar 20 16:55:23 2007 +0100 > @@ -1,4 +1,7 @@ SUBDIRS=doc include src modules > -SUBDIRS=doc include src modules > +SUBDIRS=doc include src > +if BUILD_MODULES > +SUBDIRS += modules > +endif > if BUILD_PCM_PLUGIN_SHM > SUBDIRS += aserver > endif > diff -r 6d0a999aef24 configure.in > --- a/configure.in Fri Mar 16 15:22:27 2007 +0100 > +++ b/configure.in Tue Mar 20 16:55:00 2007 +0100 > @@ -148,6 +148,44 @@ else > else > AC_MSG_RESULT(no) > fi > + > +ALSA_DEPLIBS="" > +if test "$softfloat" != "yes"; then > + ALSA_DEPLIBS="-lm" > +fi > + > +dnl Check for libdl > +AC_MSG_CHECKING(for libdl) > +AC_ARG_WITH(libdl, > + [ --with-libdl Use libdl for plugins > (default = yes)], > + [ have_libdl="$withval" ], [ have_libdl="yes" ]) > +if test "$have_libdl" = "yes"; then > + AC_CHECK_LIB([dl], [dlsym], [HAVE_LIBDL="yes"]) > + if test "$HAVE_LIBDL" = "yes" ; then > + ALSA_DEPLIBS="$ALSA_DEPLIBS -ldl" > + AC_DEFINE([HAVE_LIBDL], 1, [Have libdl]) > + fi > +else > + AC_MSG_RESULT(no) > +fi > +AM_CONDITIONAL(BUILD_MODULES, test > "$HAVE_LIBDL"="yes") > + > +dnl Check for pthread > +AC_MSG_CHECKING(for pthread) > +AC_ARG_WITH(pthread, > + [ --with-pthread Use pthread (default = > yes)], > + [ have_pthread="$withval" ], [ have_pthread="yes" > ]) > +if test "$have_pthread" = "yes"; then > + AC_CHECK_LIB([pthread], [pthread_join], > [HAVE_LIBPTHREAD="yes"]) > + if test "$HAVE_LIBPTHREAD" = "yes"; then > + ALSA_DEPLIBS="$ALSA_DEPLIBS -lpthread" > + AC_DEFINE([HAVE_LIBPTHREAD], 1, [Have > libpthread]) > + fi > +else > + AC_MSG_RESULT(no) > +fi > + > +AC_SUBST(ALSA_DEPLIBS) > > dnl Check for architecture > AC_MSG_CHECKING(for architecture) > @@ -318,6 +356,21 @@ fi > > if test "$build_pcm_ioplug" = "yes"; then > build_pcm_extplug="yes" > +fi > + > +if test "$HAVE_LIBDL" != "yes"; then > + build_pcm_meter="no" > + build_pcm_ladspa="no" > + build_pcm_pcm_ioplug="no" > + build_pcm_pcm_extplug="no" > +fi > + > +if test "$HAVE_LIBPTHREAD" != "yes"; then > + build_pcm_share="no" > +fi > + > +if test "$softfloat" != "yes"; then > + build_pcm_lfloat="no" > fi > > AM_CONDITIONAL(BUILD_PCM_PLUGIN, test > x$build_pcm_plugin = xyes) > diff -r 6d0a999aef24 include/local.h > --- a/include/local.h Fri Mar 16 15:22:27 2007 +0100 > +++ b/include/local.h Tue Mar 20 16:16:36 2007 +0100 > @@ -36,6 +36,11 @@ > #include "config.h" > #ifdef SUPPORT_RESMGR > #include <resmgr.h> > +#endif > +#ifdef HAVE_LIBDL > +#include <dlfcn.h> > +#else > +#define RTLD_NOW 0 > #endif > > #define _snd_config_iterator list_head > diff -r 6d0a999aef24 src/Makefile.am > --- a/src/Makefile.am Fri Mar 16 15:22:27 2007 +0100 > +++ b/src/Makefile.am Tue Mar 20 16:16:36 2007 +0100 > @@ -41,7 +41,7 @@ libasound_la_LIBADD += > alisp/libalisp.la > libasound_la_LIBADD += alisp/libalisp.la > endif > SUBDIRS += compat conf > -libasound_la_LIBADD += compat/libcompat.la -lm -ldl > -lpthread > +libasound_la_LIBADD += compat/libcompat.la > @ALSA_DEPLIBS@ > > libasound_la_LDFLAGS = -version-info $(COMPATNUM) > $(VSYMS) > > diff -r 6d0a999aef24 src/async.c > --- a/src/async.c Fri Mar 16 15:22:27 2007 +0100 > +++ b/src/async.c Tue Mar 20 16:16:36 2007 +0100 > @@ -151,9 +151,11 @@ int > snd_async_del_handler(snd_async_hand > if (!list_empty(&handler->hlist)) > goto _end; > switch (handler->type) { > +#ifdef BUILD_PCM > case SND_ASYNC_HANDLER_PCM: > err = snd_pcm_async(handler->u.pcm, -1, 1); > break; > +#endif > case SND_ASYNC_HANDLER_CTL: > err = snd_ctl_async(handler->u.ctl, -1, 1); > break; > diff -r 6d0a999aef24 src/conf.c > --- a/src/conf.c Fri Mar 16 15:22:27 2007 +0100 > +++ b/src/conf.c Tue Mar 20 16:16:36 2007 +0100 > @@ -415,12 +415,13 @@ beginning:</P> > === message truncated === ____________________________________________________________________________________ Bored stiff? Loosen up... Download and play hundreds of games for free on Yahoo! Games. http://games.yahoo.com/games/front _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel