martin mangard wrote:
> Hello,
> 
> I installed xenomai Version 2.5.6 on a x86 machine. I use dlopen in
> order to use the xenomai libraries.
> 
> 
>     hXenomai=dlopen("/usr/lib/libxenocalls-2.5.6.so",RTLD_NOW);
>     if(!hXenomai)
>       {
>         fprintf (stderr, "%s\n", dlerror());
>         fflush(stderr);
>       }
> 
> 
> dlopen aborts with the error: "/usr/lib/libnative.so.3: undefined
> symbol: xeno_current_mode_key"
> 
> I configured xenomai with the option " --enable-dlopen-skins "
> 
> What do I have to change in order be able to dlopen the libnative.so.3 
> library?

xeno_current_mod_key is defined in the libxenomai.so library. So, we
have two solutions:

either we make explicit the dependence between libnative.so and
libxenomai.so, as in the following patch:

index 3497f90..23beb50 100644
--- a/src/skins/native/Makefile.am
+++ b/src/skins/native/Makefile.am
@@ -2,6 +2,8 @@ lib_LTLIBRARIES = libnative.la
 
 libnative_la_LDFLAGS = @XENO_DLOPEN_CONSTRAINT@ -version-info 3:0:0 -lpthread
 
+libnative_la_LIBADD = ../common/libxenomai.la
+
 libnative_la_SOURCES = \
        alarm.c \
        buffer.c \
diff --git a/src/skins/native/Makefile.in b/src/skins/native/Makefile.in
index 2775661..011f380 100644
--- a/src/skins/native/Makefile.in
+++ b/src/skins/native/Makefile.in
@@ -58,7 +58,7 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
-libnative_la_LIBADD =
+libnative_la_DEPENDENCIES = ../common/libxenomai.la
 am_libnative_la_OBJECTS = libnative_la-alarm.lo libnative_la-buffer.lo \
        libnative_la-cond.lo libnative_la-event.lo \
        libnative_la-heap.lo libnative_la-init.lo libnative_la-intr.lo \
@@ -249,6 +249,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 lib_LTLIBRARIES = libnative.la
 libnative_la_LDFLAGS = @XENO_DLOPEN_CONSTRAINT@ -version-info 3:0:0 -lpthread
+libnative_la_LIBADD = ../common/libxenomai.la
 libnative_la_SOURCES = \
        alarm.c \
        buffer.c \

I am not sure it will not break the parallel build though it does not
seem to break on a core i7 (make -j 8).

Or you explicitly dlopen libxenomai.so with RTLD_GLOBAL before dlopening
libnative.so. The drawback being that you pollute the process namespace
with libxenomai symbols.

-- 
                                                                Gilles.

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to