Ver la versión completa : Duda con compilador cruzado
Segata Sanshiro
01/04/2013, 19:09
Estoy intentando hacer un programa simple que usa ncurses, usando Eclipse Juno como IDE y con un compilador cruzado para la Raspberry Pi. El IDE ya lo he configurado y usado anteriormente para compilar para la rpi varios programas, que usan librerías estándar y no estándar (como wiringpi).
Sin embargo, el más simple de los programas no compila. Las dos primeras líneas son:
#include <ncurses.h>
#include <string.h>
Me marca un error en la primera línea diciendo:
fatal error: ncurses.h: No such file or directory
Cuando tanto string.h como ncurses.h están en /usr/include
¿Qué puede estar pasando?
Si es una libreria tuya o externa pero no es una estándar de C/C++ y ncurses tiene pinta de serlo, los includes van con comillas "".
Y ya si eres quisquilloso se supone que en vez de string.h deberias poner cstring sin .h, esto es de los ultimos estandares,
GameMaster
01/04/2013, 21:03
que va, las comillas es para pillarlos de rutas relativas/locales, los "<", ">" es para pillarlos de las carpetas configuradas en el compilador...
-----Actualizado-----
en tu caso ponle la ruta completa usando comillas o configura el path en el entorno, ya que el compilador no tiene configurado ese path en las carpetas include
que va, las comillas es para pillarlos de rutas relativas/locales, los "<", ">" es para pillarlos de las carpetas configuradas en el compilador...
-----Actualizado-----
en tu caso ponle la ruta completa usando comillas o configura el path en el entorno, ya que el compilador no tiene configurado ese path en las carpetas include
Si, y se supone que en las rutas del compilador tendras las librerias estandar de C/C++ y en tu proyecto le añades los path a tus librerias o a otras externas.
La verdad es que mi respuesta es un poco cutre por intentar responder rapido.
Segata Sanshiro
01/04/2013, 21:06
Lo de las comillas ya lo había probado, y por desgracia no va :(
Voy a echar un vistazo a las rutas como dice GameMaster, aunque creía que el compilador miraba por defecto en /usr/include. Ahora os cuento.
Si estás compìlado en cruzado, las librerías NO son las de /usr/include (esas son las locales para el sistema) sino las de dondeestéelsdkcruzado/include
Normalmente es un sibdirectorio de /opt. Por ejemplo, para compilación cruzada en Wiz las librerías están en algo así como /opt/openwiz/include
Este es el directorio que le tienes que pasar al compilador con -I. Si le pasas /usr/include, entonces no estarías compilando cruzado :)
Segata Sanshiro
01/04/2013, 21:59
Gracias a los dos, efectivamente el .h no estaba donde tenía que estar y lo he copiado a la carpeta correspondiente (es decir, lo que dice juanvvc).
Ahora me salen varios undefined reference, pero solo cuando uso algunas funciones de ncurses (por ejemplo, curs_set), pero no con otras (como mvprintw).
He encontrado referencias al problema en páginas como ésta: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=13945&p=145035 pero no se soluciona a pesar de seguir los mismos pasos.
Además, me sale un warning:
libtinfo.so.5, needed by /home/rpidev/binarios_rpi_ncurses/libtinfo.so, not found (try using -rpath or -rpath-link)
A pesar de que libtinfo, etc. están todos en esa carpeta.
GameMaster
01/04/2013, 22:03
tienes que configurar tb la ruta de las libs
Segata Sanshiro
01/04/2013, 22:39
Ya ha compilado, el problema es que no siempre es una solución correcta suponer que libtinfo puede usarse de manera intercambiable con libncurses (o algo así xD). He tenido que buscar el libtinfo.so correcto y dejarlo con el resto de librerías. Gracias a todos de nuevo.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.