[Jde] Compilar JDE 4.3

redouane kachach redo.robot en gmail.com
Sab Oct 25 00:34:05 CEST 2008


Hola a todos,

Aver, varias cosas. No se si me he dado con el problema pero por lo menos he
conseguido localizarlo. Los pasos que he dado son los siguientes:

1) readelf -s jde

Con este comando vemos dos secciones del ejecutable:

Symbol table '*.dynsym*' contains 41 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
   -- aqui se listan todos los simbolos visibles desde fuera --

Symbol table '*.symtab*' contains 135 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
  -- aqui se listan todos los simbolos del ejecutable --

Pues bien, el jde resultado de la compilación solo tenia el "myexport" en la
segunda sección mientras deberia estar
tambien en la primera ya que es un simbolo que lo usan el resto de los
modulos.

Y porque no sale el simbolo y no se lista en la parta del *.dynsym ??

*Pues bien, si vamos al directorio base donde esta jde y borramos el
ejecutable que se genero ahi, y lanzamos de nuevo el make, vemos que el jde
se genera con la siguiente linea:

 /bin/bash ../libtool --tag=CC   --mode=link gcc -D
CONFIGDIR=\"/tmp/jde/share/jdec/conf\" -g -pedantic -Wall -pthread
-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/include/X11 --export-dynamic
-ldl  -o jde jde-jde.o  -ldl
*gcc* -D CONFIGDIR=\"/tmp/jde/share/jdec/conf\" -g -pedantic -Wall -pthread
-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/include/X11 *--export-dynamic
* -o jde jde-jde.o  -ldl

He sobrallado en negrita lo más  importante de esta linea. Tal y como indica
el Makefile.am:

*jde_LDFLAGS = --export-dynamic

*Quiere decir que a la hora del linking esta opcion tiene que estar activa.
Sin embargo, esta opcion es entendible por el LD y no por el GCC. Este
ultimo solo entiende "*-rdynamic"  *que cuando activada, el gcc pasa un
"--export-dynamic" a LD para que este haga bien el linkado incluyendo todos
los simbolos como dinamicos.

Pues cambiando el Makefile, y añadiendo la -rdynamic el "myexport" ya se
añade en la sección de *.dynsym y el graphics_gtk.so se carga bien y
encuentra el simbolo.

*Pero entonces, como esta funcion funciona en el 4.2.1 ?? La respuesta es
porque en el Makefile de esta version la opcion *SI que se pasa al
compilador*:

jde: jde.o
    $(GCC) $(CFLAGS) *-Wl,--export-dynamic* $(LIB-DIR) -o jde jde.o $(OBJS)
$(LIBS)

La -Wl le dice al GCC que pase la opcion que le viene en seguida al linker.
Lo que no se es como hacer para decirle a autotools que pase los *
jde_ldflags* al linker !!

Saludos,
Redo.


2008/10/24 redouane kachach <redo.robot en gmail.com>

>
> Hola a todos,
>
> Ayer me he instalado la 4.3 y he pasado por los mismo problemas que
> Gonzalo. Tampoco me he dado con la solucion pero es algo muy raro. Segun
> estuve leyendo el "dlopen" a la hora de buscar los simbolos empieza primero
> en el ejecutable. En nuestro caso el jde (ejecutable) es quien difine el
> simbolo myexport y si con "nm" se puede ver que el simbolo es GLOBAL y esta
> definino y visible desde fuera (lleva delante un T mayuscula) , y en
> graphics_gtk.so este simbulo esta como "U" undefined como debria ser.
>
> Lo más raro, tengo una compilación de 4.2.1 en la misma maquina donde los
> simbolos estan en la misma configuracion de arriba pero esta vez el "dlopen"
> si que encuentra el simbolo myexport y jde arranca sin problemas.
>
> Si alguien da con el error, porfavor que explique como lo ha solucionado
> :-) ..
>
> Saludos,
> Redo.
>
>
>
>
>
> 2008/10/24 Gonzalo Abella <abellagonzalo en gmail.com>
>
> Acabo de probar esto último y nada... el mismo fallo de siempre :( . No se
>> con que más probar.
>>
>> Gonzalo
>>
>>
>>
>> El 23 de octubre de 2008 21:51, José Antonio Santos Cadenas <
>> jcaden en gsyc.es> escribió:
>>
>> Prueba a poner el -Bsymbolic a jde, que es el que exporta ese símbolo, y
>>> recompílalo. A ver si hay suerte.
>>>
>>> Saludos.
>>>
>>> Jose.
>>>
>>> El Thursday 23 October 2008 21:02:25 Gonzalo Abella escribió:
>>> > Nada... me sigue dando el mismo problema... He dejado el Makefile.am de
>>> > graphics_gtk de la siguiente manera:
>>> >
>>> > *if ENABLE_GRAPHICS_GTK
>>> > service_LTLIBRARIES = graphics_gtk.la
>>> > endif
>>> >
>>> > graphics_gtk_la_SOURCES = graphics_gtk.c graphics_gtk.h
>>> > graphics_gtk_la_LDFLAGS = -module -avoid-version
>>> > -Bsymbolic$(GRAPHICS_GTK_LIBS) graphics_gtk_la_CFLAGS =
>>> > $(GRAPHICS_GTK_CFLAGS) -I$(top_srcdir)/base dist_conf_DATA =
>>> > graphics_gtk.conf
>>> >
>>> > MAINTAINERCLEANFILES = Makefile.in Makefile*
>>> >
>>> > Lanzo otra vez el reconfigure de modo que me cree el Makefile con la
>>> opción
>>> > de Bsymbolic. Hago un make clean y un make install, pero sale el mismo
>>> > error de "undefined symbol: my export".
>>> >
>>> > ¿Qué otra cosa podría ser?
>>> >
>>> > Gonzalo
>>> >
>>> > El 22 de octubre de 2008 17:47, David Lobato <dav.lobato en gmail.com
>>> >escribió:
>>> > > Perdona, Bsymbolic es una opcion de enlazado, así que hay que
>>> añadirla en
>>> > > graphics_gtk_la_LDFLAGS
>>> > >
>>> > >
>>> > >
>>> > >
>>> > > El 22 de octubre de 2008 17:43, David Lobato
>>> > > <dav.lobato en gmail.com>escribió:
>>> > >
>>> > > No hace falta que uses los Makefiles antiguos, modifica los nuevos
>>> > >
>>> > >> Makefiles.am
>>> > >>
>>> > >> Por ejemplo coge el de gtk y añade en la linea:
>>> > >> graphics_gtk_la_CFLAGS = $(GRAPHICS_GTK_CFLAGS) -I$(top_srcdir)/base
>>> > >> -Bsymbolic
>>> > >>
>>> > >> Y recompila. El Makefile deberia reconstruirse solo.
>>> > >>
>>> > >> Si con esto funciona ya sabemos cual es el problema. En ese caso
>>> ticket
>>> > >> y me pongo con ello.
>>> > >>
>>> > >> David.
>>> > >>
>>> > >>
>>> > >> El 22 de octubre de 2008 17:36, José Antonio Santos Cadenas <
>>> > >> jcaden en gsyc.es> escribió:
>>> > >>
>>> > >> Tienes razón, no me había dado cuenta de la segunda línea del error.
>>> Es
>>> > >>
>>> > >>> cierto
>>> > >>> que lo que no puede encontrar es un símbolo. Ya nos contarás.
>>> > >>>
>>> > >>> Suerte!!
>>> > >>>
>>> > >>> Jose.
>>> > >>>
>>> > >>> El Wednesday 22 October 2008 17:33:17 Gonzalo Abella escribió:
>>> > >>> > Seguramente sea esto último que dice David porque el path está
>>> bien
>>> > >>> > (si
>>> > >>>
>>> > >>> no
>>> > >>>
>>> > >>> > estuviese bien me saldría un error diciendo
>>> > >>> > /home/gon/jde-robot/lib/jdec/graphics_gtk.so:
>>> > >>> > cannot open shared object file: No such file or directory) y los
>>> > >>>
>>> > >>> permisos
>>> > >>>
>>> > >>> > los he mirado y están bien. Acabo de comentarlo con Jose María y
>>> voy
>>> > >>> > a hacer unas pruebas compilando los esquemas con los Makefiles de
>>> la
>>> > >>>
>>> > >>> 4.2.1
>>> > >>>
>>> > >>> > para ver si se arregla el problema.
>>> > >>> >
>>> > >>> > En cuanto tenga algo os comento.
>>> > >>> >
>>> > >>> > Gonzalo
>>> > >>> >
>>> > >>> > El 22 de octubre de 2008 17:17, David Lobato <
>>> dav.lobato en gmail.com
>>> > >>> >
>>> > >>> >escribió:
>>> > >>> > > No he puesto la opción -Bsymbolic que en los makefiles antiguos
>>> si
>>> > >>> > > estaba. No se si esto puede causar algún problema.
>>> > >>> > > Si no lo consigues con la solución de José Antonio prueba a
>>> pasar
>>> > >>>
>>> > >>> esta
>>> > >>>
>>> > >>> > > opción (no me acuerdo en este momento como, tendría que
>>> > >>> > > mirarlo....)
>>> > >>> > >
>>> > >>> > > El 22 de octubre de 2008 17:01, Gonzalo Abella
>>> > >>> > > <abellagonzalo en gmail.com>escribió:
>>> > >>> > >
>>> > >>> > > Perfecto!! Ya lo tengo en mi home. Ahora el problema me viene
>>> al
>>> > >>>
>>> > >>> ejecutar
>>> > >>>
>>> > >>> > >> un esquema cualquiera. Al cargar graphics_gtk me sale esto:
>>> > >>> > >>
>>> > >>> > >> gon en moriles:~/config-jde$ ../jdec/base/jde conf-project.conf
>>> > >>> > >> jdec 4.3-svn
>>> > >>> > >> Configuration from conf-project.conf
>>> > >>> > >> Reading configuration...
>>> > >>> > >> graphics_gtk driver loaded (driver 0)
>>> > >>> > >> Loading GTK support...
>>> > >>> > >> ../jdec/base/jde: symbol lookup error:
>>> > >>> > >> /home/gon/jde-robot/lib/jdec/services/graphics_gtk.so:
>>> undefined
>>> > >>>
>>> > >>> symbol:
>>> > >>> > >> myexport
>>> > >>> > >>
>>> > >>> > >>
>>> > >>> > >> Según creo es del linkado, pero no se como arreglarlo.
>>> > >>> > >>
>>> > >>> > >> Un saludo
>>> > >>> > >> Gonzalo
>>> > >>> > >>
>>> > >>> > >>
>>> > >>> > >>
>>> > >>> > >> El 21 de octubre de 2008 17:15, David Lobato
>>> > >>> > >> <dav.lobato en gmail.com>escribió:
>>> > >>> > >>
>>> > >>> > >> No queda otra que instalarlo en algún sitio para poder usarlo,
>>> ya
>>> > >>>
>>> > >>> que
>>> > >>>
>>> > >>> > >> los
>>> > >>> > >>
>>> > >>> > >>> .so están cada uno por su lado dentro de los directorios de
>>> > >>> > >>> driver, schemas y demás. Usa la variable prefix que se pasa
>>> al
>>> > >>> > >>> configure
>>> > >>>
>>> > >>> con
>>> > >>>
>>> > >>> > >>> algún directorio en tu cuenta o en el tmp.
>>> > >>> > >>>
>>> > >>> > >>> Un saludete.
>>> > >>> > >>> David.
>>> > >>> > >>>
>>> > >>> > >>> 2008/10/21 Gonzalo Abella <abellagonzalo en gmail.com>
>>> > >>> > >>>
>>> > >>> > >>>> Buenas,
>>> > >>> > >>>>
>>> > >>> > >>>> estoy empezando a usar jde 4.3, pero no consigo compilarlo.
>>> Sigo
>>> > >>>
>>> > >>> las
>>> > >>>
>>> > >>> > >>>> instrucciones que hay en un mail de la lista de hace algunas
>>> > >>>
>>> > >>> semanas:
>>> > >>> > >>>> $> autoreconf -vfi
>>> > >>> > >>>> --> Genera el configure. Si falla revisad que tenéis
>>> > >>> > >>>> automake-1.9, autoconf y libtools
>>> > >>> > >>>>
>>> > >>> > >>>> $>./configure --with-player=<path de player si no es
>>> /usr/local>
>>> > >>> > >>>> --with-gazebo=<path de gazebo si no es /usr/local>
>>> > >>> > >>>> --prefix=<path donde quereis instalarlo>
>>> > >>> > >>>>
>>> > >>> > >>>> $> make install
>>> > >>> > >>>> [/copia]
>>> > >>> > >>>>
>>> > >>> > >>>>
>>> > >>> > >>>> Pero en vez de hacer el "make install" hago el un "make". Lo
>>> > >>>
>>> > >>> compila,
>>> > >>>
>>> > >>> > >>>> pero no me crea los ".so" o si los crea no tengo ni idea de
>>> > >>> > >>>> donde
>>> > >>>
>>> > >>> los
>>> > >>>
>>> > >>> > >>>> deja. ¿Sabéis que puede ser? No me da errores de
>>> compilación.
>>> > >>> > >>>>
>>> > >>> > >>>> Un saludo
>>> > >>> > >>>> Gonzalo
>>> > >>> > >>>>
>>> > >>> > >>>> _______________________________________________
>>> > >>> > >>>> Jde-developers mailing list
>>> > >>> > >>>> Jde-developers en gsyc.es
>>> > >>> > >>>>
>>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developer
>>> > >>> > >>>>s
>>> > >>>
>>> > >>> _______________________________________________
>>> > >>> Jde-developers mailing list
>>> > >>> Jde-developers en gsyc.es
>>> > >>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>> > >
>>> > > _______________________________________________
>>> > > Jde-developers mailing list
>>> > > Jde-developers en gsyc.es
>>> > > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>
>>>
>>> _______________________________________________
>>> Jde-developers mailing list
>>> Jde-developers en gsyc.es
>>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>
>>
>>
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20081025/44cb4e5a/attachment-0001.htm 


More information about the Jde-developers mailing list