[Jde-dev] Compilación "cameraserver"

David Lobato dav.lobato en gmail.com
Dom Mar 7 17:27:55 CET 2010


Hola,

Lo primero indicarte que compilar cameraserver sin el configure es
complicado... yo no iría por ahí. Ten en cuenta que depende de varías
librerías como jderobotice, colorspaces,... El configure es la manera mas
fácil de compilarlo sin ninguna duda.


El problema es que el enlazador en tiempo de ejecución no encuentra las
librerías con las que hemos enlazado nuestro programa, en este caso
cameraserver con gearbox.

Como indica Francisco declarando LD_LIBRARY_PATH solucionamos el problema,
ya que le estamos indicando a nuestro enlazador un path mas donde buscar
librerías. Esta es una solucion cuando no tenemos
 acceso al root de la máquina, pudiendo declarar dicha variable en el
fichero de configuración de nuestro shell (.bashrc, .profile, ...).

La otra es, si tenemos acceso al root de la máquina, añadir una entrada a la
configuración del enlazador, que se encuentra en /etc/ld.conf.so (fichero)
/etc/ld.conf.so.d/ (directorio).

En debian/ubuntu basta que añadamos nuestro fichero de configuración para la
librería en concreto, por ejemplo gearbox.conf que contenga:

/usr/local/lib


vamos, el path donde buscar. Con esto habilitamos a nivel del sistema el uso
de gearbox, sin la necesidad de declarar la variable LD_LIBRARY_PATH.


Espero que haya aclarado un poco el asunto.
David.

2010/3/7 Francisco Rivas <fm.rivas en alumnos.urjc.es>

> Buenas,
> a mi me paso lo mismo y es que no es capaz de resolver las referencias
> con la librería de GearBox.
> Para "arreglar" esto hay que añadir a la variable LD_LIBRARY_PATH el
> path de GearBox que si no lo has cambiado en el cmake al instalarla es:
> /usr/local/lib/gearbox:
>
> Pureba a ejecutar:
> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/gearbox/
>
> y luego otra vez el make.
>
> Suerte.
>
>
>
>
> "Javier Vazquez" <javiervazper en yahoo.es> ha escrito:
>
> > Gracias David,
> >
> > la verdad es que estaba tratando de generarme un Makefile a mano
> > para compilar solo "cameraserver" y sin usar la parte del configure.
> >
> > He instalado OpenCV 2.0 siguiendo las instrucciones de [1] y ha ido bien.
> >
> > Después he preferido continuar compilando el proyecto entero. Como
> > soy nuevo en esto, buscando en algunos manuales, he visto que los
> > pasos son los siguientes:
> >
> >
> >       1. Posicionarse en directorio del proyecto.
> >       2. Ejecutar "aclocal"
> >       3. Ejecutar "autoconf"
> >       4. Ejecutar "autoheader"
> >
> >       5. Ejecutar "automake -a":
> >       1. Me ha dado el fallo de que no podía instalar "ltmain.h". He
> > verificado que "libtool" está instalado y que este fichero existe
> > bajo /usr/share/libtool/config/ltmain.sh. Lo he enlazado a mano,
> > bajo el subdirectorio config, justo a config.guess, etc.., ya que no
> > sabía la forma de lograr que "automake" se diera cuenta.
> >       2. Al volver a lanzarlo, ha creado el Makefile.in
> >       6. Ejecutar "./configure"
> >       1. Me ha identificado varias cosas que faltaban y que he agregado:
> > gtkmm 2.4 y libglade 2.4. También daba otro error diciendo que no
> > encontraba "mysql++/mysql++.h" al tener habilitado el componente
> > "recordingserver".
> >
> >       2. Después de instalar gtkmm y libglade 2.4, he ejecutado
> > "./configure" con la opción "--disable-component-recordingserver" y
> > ha pasado.
> >
> >       7. Al ejecutar el make, después de muchos pasos, me reporta un
> > error justo al procesar "cameraserver":····
> > /bin/bash ../../../libtool --tag=CXX   --mode=link g++  -g -O2
> > -pthread -lgstapp-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0
> > -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0    -o
> > cameraserver cameraserver-cameraserver.o cameraserver-gstpipeline.o
> > ../../../src/libs/jderobotice/libJderobotIce.la
> > ../../../src/libs/jderobotutil/libJderobotUtil.la
> > ../../../src/libs/colorspaces/libcolorspacesmm.la
> > ../../../src/interfaces/cpp/jderobot/libJderobotInterfaces.la -lm
> > libtool: link: g++ -g -O2 -pthread -o .libs/cameraserver
> > cameraserver-cameraserver.o cameraserver-gstpipeline.o
> > -lgstapp-0.10 /usr/lib/libgstbase-0.10.so
> > /usr/lib/libgstreamer-0.10.so /usr/lib/libgobject-2.0.so
> > /usr/lib/libgmodule-2.0.so /usr/lib/libgthread-2.0.so -lrt
> > /usr/lib/libxml2.so /usr/lib/libglib-2.0.so
> > ../../../src/libs/jderobotice/.libs/libJderobotIce.so
> > ../../../src/libs/jderobotutil/.libs/libJderobotUtil.so
> > ../../../src/libs/colorspaces/.libs/libcolorspacesmm.so
> > ../../../src/interfaces/cpp/jderobot/.libs/libJderobotInterfaces.so
> > -lm -pthread -Wl,-rpath -Wl,/usr/local/lib/jderobot
> > /usr/bin/ld: warning: libGbxUtilAcfr.so.1.0.0, needed by
> > ../../../src/libs/jderobotice/.libs/libJderobotIce.so, not found
> > (try using -rpath or -rpath-link)
> > /usr/bin/ld: warning: libGbxIceUtilAcfr.so.1.0.0, needed by
> > ../../../src/libs/jderobotice/.libs/libJderobotIce.so, not found
> > (try using -rpath or -rpath-link)
> > cameraserver-cameraserver.o: In function `~ConfigFileException':
> >
> /home/jvazquez/workspace/jderobot_5.0_III/src/libs/jderobotice/exceptions.h:29:
> undefined reference to
> > `gbxutilacfr::Exception::~Exception()'
> >
> /home/jvazquez/workspace/jderobot_5.0_III/src/libs/jderobotice/exceptions.h:29:
> undefined reference to
> > `gbxutilacfr::Exception::~Exception()'
> > cameraserver-cameraserver.o: In function `~Thread':
> > /usr/local/include/gearbox/gbxsickacfr/gbxiceutilacfr/thread.h:73:
> > undefined reference to `vtable for gbxiceutilacfr::Thread'
> > /usr/local/include/gearbox/gbxsickacfr/gbxiceutilacfr/thread.h:73:
> > undefined reference to `vtable for gbxiceutilacfr::Thread'
> > /usr/local/include/gearbox/gbxsickacfr/gbxiceutilacfr/thread.h:73:
> > undefined reference to `VTT for gbxiceutilacfr::Thread'
> > /usr/local/include/gearbox/gbxsickacfr/gbxiceutilacfr/thread.h:73:
> > undefined reference to `vtable for gbxiceutilacfr::Thread'
> > ····
> >
> > El fichero de cabecera está instalado en
> > "/usr/local/include/gearbox/gbxutilacfr/exceptions.h" ¿?
> >
> > ¿Alguna idea?
> >
> >
> >
> >
> >
> > ________________________________
> > De: David Lobato <dav.lobato en gmail.com>
> > Para: Javier Vazquez <javiervazper en yahoo.es>
> > CC: jde developers <jde-developers en gsyc.es>
> > Enviado: sáb,6 marzo, 2010 11:03
> > Asunto: Re: Compilación "cameraserver"
> >
> > Si es esto comentame y ponemos un ticket en el trac para revisar el
> > configure y que te avise si no tienes la versión 2.0 de opencv
> >
> >
> > 2010/3/6 David Lobato <dav.lobato en gmail.com>
> >
> > El error que te da es que no tienes la versión 2.0 de opencv (no se
> > porque el configure no ha avisado...) y por eso no encuentra el
> > namespace cv donde está todo el API C++ de opencv.
> >>
> >>
> >>
> >>
> >> David.
> >>
> >>
> >> 2010/3/6 Javier Vazquez <javiervazper en yahoo.es>
> >>
> >>
> >>>>
> >>> Disculpa, no me he dado cuenta de que es otra interface ICE. Ya he
> >>> traducido a C/C++ el fichero jcm.ice.
> >>>
> >>> Parece que solo me queda solucionar el fallo siguiente en imagecv.h:
> >>>>>
> >>>
> >>> jvazquez en ubuntu:~/workspace/jderobot_5.0/src/components/cameraserver$
> make
> >>> c++ -g  -I.
> >>> -I/home/jvazquez/workspace/jderobot_5.0/src/interfaces/slice/
> >>> -I/usr/include/opencv/
> >>> -I/home/jvazquez/workspace/jderobot_5.0/src/interfaces/slice/jderobot/
> >>> -I/home/jvazquez/workspace/jderobot_5.0/src/libs
> >>> -I/usr/include/libxml2/ -I/usr/include/gstreamer-0.10/
> >>> -I/usr/include/gstreamer-0.10/ -I/usr/include/glib-2.0/
> >>> -I/usr/lib/glib-2.0/include/ -I/usr/local/include/gearbox -lforms
> >>> -lX11 -lpioneer -lm -lpthread -lXpm -ldl -fPIC -c gstpipeline.cpp
> >>>
> >>> In file included from
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/colorspacesmm.h:25,
> >>>                 from gstpipeline.h:11,
> >>>                 from gstpipeline.cpp:1:
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: ?cv? has not been declared
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: expected ?{? before ?Mat?
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: invalid type in declaration before ?{? token
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> warning: extended initializer lists only available with -std=c++0x
> >>> or -std=gnu++0x
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected primary-expression before ?public?
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected ?}? before ?public?
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected ?,? or ?;? before ?public?
> >>>>>
> >>> gstpipeline.cpp:257: error: expected ?}? at end of input
> >>> make: *** [gstpipeline.o] Error 1
> >>>
> >>> A ver si doy con las últimas librerías que me faltan ...
> >>>
> >>>
> >>>>>
> >>>
> >>>
> > ________________________________
> > De: Javier Vazquez <javiervazper en yahoo.es>
> >>> Para: David Lobato <dav.lobato en gmail.com>
> >>>
> >>> CC: jde developers
> >>> <jde-developers en gsyc.es>
> >>> Enviado: sáb,6 marzo, 2010 09:31
> >>> Asunto: Re: Compilación "cameraserver"
> >>>
> >>>
> >>>
> >>> Gracias David,
> >>>
> >>> ya he pasado de ese punto, instalados los paquetes de desarrollo
> >>> de gstreamer más instalado gearbox. Estoy ajustando el Makefile y
> >>> me aparece una referencia a un fichero cabecera de JDErobot que
> >>> creo que no está subido al repositorio: El el "jcm.h" ¿Te suena si
> >>> hay que subirlo?
> >>>
> >>> jvazquez en ubuntu:~/workspace/jderobot_5.0/src/components/cameraserver$
> make
> >>> 2>&1 | tee log
> >>> c++ -g  -I.
> >>> -I/home/jvazquez/workspace/jderobot_5.0/src/interfaces/slice/jderobot/
> >>> -I/home/jvazquez/workspace/jderobot_5.0/src/libs
> >>> -I/usr/include/libxml2/ -I/usr/include/gstreamer-0.10/
> >>> -I/usr/include/gstreamer-0.10/ -I/usr/include/glib-2.0/
> >>> -I/usr/lib/glib-2.0/include/ -I/usr/local/include/gearbox -lforms
> >>> -lX11 -lpioneer -lm -lpthread -lXpm -ldl -fPIC -c gstpipeline.cpp
> >>> In file included
> >>> from
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/component.h:20,
> >>>                 from gstpipeline.h:9,
> >>>                 from gstpipeline.cpp:1:
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:28:26:
> error: jderobot/jcm.h: No such file or directory==>> ¿sería en la carpeta
> >>> jderobotutil?
> >>>>>
> >>> In file included from
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/component.h:20,
> >>>                 from gstpipeline.h:9,
> >>>                 from
> >>> gstpipeline.cpp:1:
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:84:
> >>> error: ?jderobot? has not been declared
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:84:
> >>> error: ISO C++ forbids declaration of ?FQComponentName? with no type
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:84:
> >>> error: expected ?;? before ?&? token
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:241:
> >>> error: ISO C++ forbids declaration of ?jderobot? with no type
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:241:
> >>> error: expected ?,? or ?...? before ?::? token
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:249:
> >>> error: ?jderobot? has not been declared
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:249:
> >>> error: ISO C++ forbids declaration of ?FQComponentName? with no
> >>> type
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/context.h:249:
> >>> error: expected ?;? before ?name_?
> >>> In file included from gstpipeline.h:9,
> >>>                 from gstpipeline.cpp:1:
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/component.h:165:
> error: ISO C++ forbids declaration of ?jderobot? with no
> >>> type
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/jderobotice/component.h:165:
> error: expected ?,? or ?...? before ?::?
> >>> token
> >>> In file included from
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/colorspacesmm.h:25,
> >>>>>
> >>>                 from gstpipeline.h:11,
> >>>                 from
> >>> gstpipeline.cpp:1:
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: ?cv? has not been declared
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: expected ?{? before ?Mat?
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> error: invalid type in declaration before ?{? token
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:36:
> >>> warning: extended initializer lists only available with -std=c++0x
> >>> or -std=gnu++0x
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected primary-expression before ?public?
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected ?}? before ?public?
> >>>>>
> >>>
> /home/jvazquez/workspace/jderobot_5.0/src/libs/colorspaces/imagecv.h:37:
> >>> error: expected ?,? or ?;? before ?public?
> >>> gstpipeline.cpp:257: error: expected
> >>> ?}? at end of input
> >>> make: *** [gstpipeline.o] Error 1
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>>
> > ________________________________
> > De: David Lobato <dav.lobato en gmail.com>
> >>> Para: Javier Vazquez <javiervazper en yahoo.es>
> >>> CC: jde developers <jde-developers en gsyc.es>
> >>> Enviado: vie,5 marzo, 2010 12:39
> >>> Asunto: Re: Compilación "cameraserver"
> >>>
> >>> Las 2 primeras cabeceras son de gstreamer, concretamente vienen en
> >>> los paquetes libgstreamer0.10-dev y
> >>> libgstreamer-plugins-base0.10-dev respectivamente.
> >>>>>
> >>>
> >>> La última es de
> >>> gearbox, que de momento no está paquetizado para debian. Puedes
> >>> encontrar las fuentes aquí [1].
> >>>
> >>>
> >>> David.
> >>>
> >>>
> >>> [1] http://gearbox.sourceforge.net/
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>>
> >>> 2010/3/5 Javier Vazquez <javiervazper en yahoo.es>
> >>>
> >>> Hola David,
> >>>>
> >>>> estoy tratando de compilar el código del componente
> >>>> "cameraserver" que hay en el repositorio de la 5.0. Veo en la
> >>>> parte de los includes algunas cabeceras que no tengo instaladas:
> >>>>
> >>>> gstpipeline.h:6:21: error: gst/gst.h: No such file or directory
> >>>> gstpipeline.h:7:32: error: gst/app/gstappsink.h: No such file or
> directory
> >>>> gstpipeline.h:8:51: error:
> >>>> gbxsickacfr/gbxiceutilacfr/safethread.h: No such file or directory
> >>>>
> >>>>
> >>>> He probado con varios paquetes de "gstreamer" pero no lo
> >>>> encuentro. ¿Sabes que paquetes son necesarios para resolver las
> >>>> dependencias de las tres cabeceras anteriores?
> >>>>
> >>>> Gracias de antemano,
> >>>> Javier.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>
> >
> >
> >
> >
>
>
>
> ----------------------------
> Francisco Miguel Rivas Montero
> http://jde.gsyc.es/index.php/Frivas-pfc-itis
> _______________________________________________
> 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/20100307/2be4c0b3/attachment-0001.htm 


More information about the Jde-developers mailing list