[Jde-dev] makefiles para componentes jderobot

franciscomiguel.rivas en urjc.es franciscomiguel.rivas en urjc.es
Jue Oct 14 13:40:09 CEST 2010


Buenas,
si si, si hago todo eso.. algo se me esta escapando. Te mando los pasos:
pwd
/home/frivas/svn/jderobot/jderobot/branches/5.0

./configure --prefix=`pwd`/build --disable-component-recordingserver  
SLICEDIR=/usr/share/Ice-3.3.1/slice/
make
make install


me meto en la carpeta donde esta mi componente y ejecuto el make.

JDEROBOTDIR=/home/frivas/svn/jderobot/jderobot/branches/5.0/build/ make


cc `pkg-config --libs gtkmm-2.4 libglademm-2.4 gthread-2.0`  
`pkg-config --libs opencv` -lgsl -lgslcblas  naobody.o   -o naobody
naobody.o: In function `main':
naobody.cpp:(.text+0x11c): undefined reference to  
`jderobotice::Application::Application(jderobotice::Component&)'
naobody.cpp:(.text+0x137): undefined reference to  
`jderobotice::Application::jderobotMain(int, char**)'
naobody.o: In function `__static_initialization_and_destruction_0(int, int)':
naobody.cpp:(.text+0x1f9): undefined reference to  
`IceInternal::FactoryTable::FactoryTable()'
naobody.cpp:(.text+0x1fe): undefined reference to  
`IceInternal::FactoryTable::~FactoryTable()'
naobody.cpp:(.text+0x227): undefined reference to  
`Ice::AdapterNotFoundException::~AdapterNotFoundException()'
naobody.cpp:(.text+0x250): undefined reference to  
`jderobot::JderobotException::~JderobotException()'
naobody.cpp:(.text+0x279): undefined reference to  
`IceStorm::LinkExists::~LinkExists()'

........

No veo donde esta el fallo...


"David Lobato" <dav.lobato en gmail.com> escribió:

> Ojo, que JDEROBOTDIR debe apuntar al directorio de instalación y no al
> directorio fuente. Es decir, a aquel directorio en el que al hacer make
> install va todo.
>
> Por ejemplo si hicimos un configure con:
>
> $> pwd
> /home/dlobato/worspace/jderobot
> $> ./configure --prefix=`pwd`/build
>
> entonces JDEROBOTDIR=/home/dlobato/worspace/jderobot/build
>
>
> 2010/10/14 <franciscomiguel.rivas en urjc.es>
>
>> Buenas,
>> si, tengo a JDEROBOTDIR apuntado al directorio de instalación de JDE he
>> usado:
>>
>> JDEROBOTDIR=<path> make (JDEROBOTDIR=/home/frivas/jde-5.0/ make)
>>
>> pero lo había probado de las tres formas y nada
>>
>>
>> alguna otra idea?
>>
>>
>>
>> "David Lobato" <dav.lobato en gmail.com> escribió:
>>
>>  Hola Francisco,
>>>
>>> recuerda que tienes que declarar la variable JDEROBOTDIR con el directorio
>>> donde instalaste jderobot.
>>>
>>> Puedes hacerlo de tres maneras:
>>>
>>>   1. Definirla directamente en el Makefile JDEROBOTDIR=<path>
>>>   2. Definirla como variable de entorno
>>>   3. Pasarsela al make al ejecuralo: $> JDEROBOTDIR=<path> make
>>>
>>>
>>> Espero que eso solucione los problemas.
>>>
>>> Un saludo,
>>> David.
>>>
>>> 2010/10/13 <franciscomiguel.rivas en urjc.es>
>>>
>>>  Buenas,
>>>> estoy intentando compilar un componente que estoy haciendo, al intentarlo
>>>> compilar desde el Makefile me salen una lista de dependencias que no
>>>> están
>>>> definidas...
>>>>
>>>> Mi Makefile:
>>>>
>>>> CXXFLAGS = -I$(JDEROBOTDIR)/include/jderobot
>>>> -I/usr/local/include/gearbox/
>>>> `pkg-config --cflags opencv` `pkg-config --cflags gtkmm-2.4
>>>> libglademm-2.4
>>>> gthread-2.0`
>>>>
>>>> LDFLAGS = `pkg-config --libs gtkmm-2.4 libglademm-2.4 gthread-2.0`
>>>> `pkg-config --libs opencv` -lgsl -lgslcblas
>>>> LDADD = $(JDEROBOTDIR)/lib/jderobot/libJderobotIce.la \
>>>>       $(JDEROBOTDIR)/lib/jderobot/libJderobotUtil.la \
>>>>       $(JDEROBOTDIR)/lib/jderobot/libcolorspacesmm.la \
>>>>       $(JDEROBOTDIR)/lib/jderobot/libJderobotInterfaces.la \
>>>>       $(JDEROBOTDIR)/lib/jderobot/libprogeo.la
>>>>
>>>> naobody: naobody.o
>>>>       libtool --mode=link g++ -g -O -o naobody naobody.o $(LDADD)
>>>> $(LDFLAGS)
>>>>
>>>> clean:
>>>>       rm -rf *.o
>>>>
>>>> Errores:
>>>> cc `pkg-config --libs gtkmm-2.4 libglademm-2.4 gthread-2.0` `pkg-config
>>>> --libs opencv` -lgsl -lgslcblas  naobody.o   -o naobody
>>>> naobody.o: In function `main':
>>>> naobody.cpp:(.text+0x11c): undefined reference to
>>>> `jderobotice::Application::Application(jderobotice::Component&)'
>>>> naobody.cpp:(.text+0x137): undefined reference to
>>>> `jderobotice::Application::jderobotMain(int, char**)'
>>>> naobody.o: In function `__static_initialization_and_destruction_0(int,
>>>> int)':
>>>> naobody.cpp:(.text+0x1f9): undefined reference to
>>>> `IceInternal::FactoryTable::FactoryTable()'
>>>> naobody.cpp:(.text+0x1fe): undefined reference to
>>>> `IceInternal::FactoryTable::~FactoryTable()'
>>>> naobody.cpp:(.text+0x227): undefined reference to
>>>> `Ice::AdapterNotFoundException::~AdapterNotFoundException()'
>>>> naobody.cpp:(.text+0x250): undefined reference to
>>>> `jderobot::JderobotException::~JderobotException()'
>>>> naobody.cpp:(.text+0x279): undefined reference to
>>>> `IceStorm::LinkExists::~LinkExists()'
>>>>
>>>> ¿veis algo que pueda faltar?
>>>>
>>>> Si lo compilo desde autotools en la cadena de jde no tengo problemas..
>>>> pero
>>>> como mas adelante necesitaré usar librerías que no están dentro de la
>>>> cadena
>>>> (naoqi) necesito compilarlo desde un Makefile,
>>>>
>>>> ¿alguna idea?
>>>>
>>>> Gracias de antemano,
>>>> Fran
>>>>
>>>>
>>>> "David Lobato" <dav.lobato en gmail.com> escribió:
>>>>
>>>>
>>>>  Hola,
>>>>
>>>>>
>>>>> Os adjunto un ejemplo de Makefile para compilar un componente para
>>>>> jderobot
>>>>> sin tener que añadirlo al arbol de jderobot. De esta manera en los
>>>>> inicios
>>>>> de los componentes que vayamos desarrollando no tenemos que complicarnos
>>>>> la
>>>>> vida con configures o makefiles.am
>>>>>
>>>>> La idea es que una vez instalado jderobot en nuestro sistema podemos
>>>>> enlazar
>>>>> con sus librerías, al igual que lo haríamos con otros proyectos
>>>>> (opencv,gtk,..)
>>>>>
>>>>> El ejemplo sería así:
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>>
>>>>> CXXFLAGS = -I $(JDEROBOTDIR)/include/jderobot `pkg-config --cflags
>>>>> opencv`
>>>>> `pkg-config --cflags gtkmm-2.4 libglademm-2.4 gthread-2.0`
>>>>> LDFLAGS = `pkg-config --libs gtkmm-2.4 libglademm-2.4 gthread-2.0`
>>>>> `pkg-config --libs opencv` -lgsl -lgslcblas
>>>>> LDADD = $(JDEROBOTDIR)/lib/jderobot/libJderobotIce.la \
>>>>>       $(JDEROBOTDIR)/lib/jderobot/libJderobotUtil.la \
>>>>>       $(JDEROBOTDIR)/lib/jderobot/libcolorspacesmm.la \
>>>>>       $(JDEROBOTDIR)/lib/jderobot/libJderobotInterfaces.la \
>>>>>       $(JDEROBOTDIR)/lib/jderobot/libprogeo.la
>>>>>
>>>>> calibrator: calibrator.o view.o controller.o
>>>>>       libtool --mode=link g++ -g -O -o calibrator calibrator.o view.o
>>>>> controller.o $(LDADD) $(LDFLAGS)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> En este ejemplo estoy compilando el componente calibrator que se crea
>>>>> desde
>>>>> los tres objetos indicados. Estos se compilan con una regla implicita de
>>>>> make.
>>>>> Para inicializar la variable JDEROBOTDIR, que es el lugar donde hemos
>>>>> instalado jderobot, podemos bien declarar la variable de entorno bien
>>>>> pasarsela a make con:
>>>>>
>>>>> $> JDEROBOTDIR=path-jderobot make
>>>>>
>>>>> Y con esto generaremos el ejecutable calibrator con todas sus librerías
>>>>> dinámicas al alcance (no mas LDLIBRARYPATH!!)
>>>>>
>>>>> Espero que sea de ayuda,
>>>>>
>>>>>
>>>>> --
>>>>> David Lobato Bravo
>>>>>
>>>>> Universidad Rey Juan Carlos
>>>>> c/Tulipan s/n
>>>>> 28933 Móstoles
>>>>> Madrid, Spain
>>>>> http://jderobot.org
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>> David Lobato Bravo
>>>
>>> Universidad Rey Juan Carlos
>>> c/Tulipan s/n
>>> 28933 Móstoles
>>> Madrid, Spain
>>> http://jderobot.org
>>>
>>>
>>
>>
>
>
> --
> David Lobato Bravo
>
> Universidad Rey Juan Carlos
> c/Tulipan s/n
> 28933 Móstoles
> Madrid, Spain
> http://jderobot.org
>




More information about the Jde-developers mailing list