sdcc fallo en el linker

Ir abajo

sdcc fallo en el linker

Mensaje por santiago lafuente gracia el Vie 30 Abr 2010 - 21:07

He comenzado a trabajar con el "Piklab" y "Sdcc" sobre Ubuntu con resultados muy divertidos. He sido hasta hace poco un forofo del Mplab con ensamblador. En mi tercer programa cuando utilizo mi primera llamada a una librería (stdlib) con un "itoa" me realiza una compilación correcta pero me falla el linker. El mensaje que me da es el siguiente:

sdcc -mpic16 -p18f2331 -V --debug -I/home/potis/pics/sdcc/ldc/ -c LDC.c
+ "/usr/bin/sdcpp" -nostdinc -Wall -I"/home/potis/pics/sdcc/ldc/" -Dpic18f2331 -D__18f2331 -DSTACK_MODEL_SMALL -obj-ext=.o -DSDCC_MODEL_SMALL -DSDCC=290 -DSDCC_REVISION=5416 -DSDCC_pic16 -D__pic16 -isystem "/usr/bin/../share/sdcc/include/pic16" -isystem "/usr/share/sdcc/include/pic16" -isystem "/usr/bin/../share/sdcc/include" -isystem "/usr/share/sdcc/include" "LDC.c" --------->COMPILACION CORRECTA


sdcc -mpic16 -p18f2331 -V --debug -Wl-c -Wl-m -I/home/potis/pics/sdcc/ldc/ -oLDC.hex LDC.o
using default linker script "/usr/share/gputils/lkr/18f2331.lkr"
missing definition for symbol "_itoa", required by "LDC.o" ----------->>>>>MENSAJE DE ERROR
+ "/usr/bin/gplink" -I"/usr/bin/../share/sdcc/lib/pic16" -I"/usr/share/sdcc/lib/pic16" -I"/usr/bin/../share/sdcc/lib" -I"/usr/share/sdcc/lib" -c -m -w -r -o LDC.hex LDC.o crt0i.o libdev18f2331.lib libsdcc.lib -------->LINCADO INCORRECTO
*** Salida con estado: 1 ***

Alguien me puede echar una mano. De todas formas seguiré investigando.

santiago lafuente gracia
Nuevo Usuario
Nuevo Usuario

Mensajes : 4
Fecha de inscripción : 30/04/2010

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Risanti el Vie 30 Abr 2010 - 22:45

Hola Santiago..
Es posible que publiques el codigo fuente de este programa??.


atte.
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

https://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Geo el Sáb 1 Mayo 2010 - 0:33

Te falta agregar libc18f.lib a los parámetros del enlazador, esta es la que contiene las referencias a itoa.

Geo
Participante Activo
Participante Activo

Mensajes : 92
Fecha de inscripción : 16/12/2008
Localización : México

http://hsblog.mexchip.com

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por santiago lafuente gracia el Sáb 1 Mayo 2010 - 9:06

Risanti escribió:Hola Santiago..
Es posible que publiques el codigo fuente de este programa??.


atte.
RiSanti

Te dejo la parte jugosa de un programa del control de LDC
/* ----------------------------------------------------------------------- */
/* Plantilla generada por Piklab */
#include
#include
#include
/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
code char at __CONFIG1H CONFIG1H = _OSC_IRCIO_1H & _FCMEN_ON_1H & _IESO_ON_1H;

char z[25];
int i = 123;

void init_board(void) {
OSCCON = 0x78; // oscilador interno a 8 MHZ
}

void main()
{
init_board();

//preparo el itoa ------------------->>AQUI ENCUENTRA EL FALLO
itoa(i,z,10);

}

santiago lafuente gracia
Nuevo Usuario
Nuevo Usuario

Mensajes : 4
Fecha de inscripción : 30/04/2010

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por santiago lafuente gracia el Sáb 1 Mayo 2010 - 9:12

Geo escribió:Te falta agregar libc18f.lib a los parámetros del enlazador, esta es la que contiene las referencias a itoa.

El fichero del que tu me comentas lo encuentro en " /usr/share/sdcc/lib/pic16 " (directorio apuntado por el Linker).
En algún otro foro he leido que tenía que makearlo pero eran en un "debian". ??? gracias1000

santiago lafuente gracia
Nuevo Usuario
Nuevo Usuario

Mensajes : 4
Fecha de inscripción : 30/04/2010

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Risanti el Sáb 1 Mayo 2010 - 14:29

Gracias Geo..
Por tu respuesta muy acertada....como siempre...

Santiago.. probé lo que indico Geo con tu código fuente y lo compila bien... ademas te dejo un vídeo que muestra como para enlazar tu código con esta libreria usando piklab..

Video Piklab con Librerias


Atte.
RiSanti.
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

https://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

fallo en el linker

Mensaje por santiago lafuente gracia el Sáb 1 Mayo 2010 - 17:03

Para solucionar el problema en el entorno "PIKLAB"
PROYECTO-->>OPCIONES DE PROYECTO-->>TooChain-->>pestaña de "LINKER"
Pasar la "configuracion" a personalizado (se mantienen las opciones por defecto) y escribir en la linea blanca señalada por una "X" el fichero indicado por Geo " libc18f.lib" Teclear "añadir" y "OK" . Ahora todo funciona perfectamente.
Gracias por vuestra celeridad en contestar Risanti y Geo.

santiago lafuente gracia
Nuevo Usuario
Nuevo Usuario

Mensajes : 4
Fecha de inscripción : 30/04/2010

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Geo el Dom 2 Mayo 2010 - 5:11

Por nada, cuando se puede ayudar con mucho gusto Smile.

Risanti, buena idea el video, no había pensado en incluir el archivo al proyecto.
santiago, a seguirle dando Smile.

Geo
Participante Activo
Participante Activo

Mensajes : 92
Fecha de inscripción : 16/12/2008
Localización : México

http://hsblog.mexchip.com

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Fernan el Dom 2 Mayo 2010 - 9:57

Muchas gracias por este pedazo de video
Todavia recuerdo los problemas que tuve yo con esta misma libreria para los delays, y como resolviesteis mis dudas.
Ademas con la segunda manera de compilar podemos ver todas las funciones que dependen de esta libreria.
Lo dicho, muchas gracias.
Fernan

Fernan
Participante Activo
Participante Activo

Mensajes : 38
Fecha de inscripción : 17/12/2008
Edad : 54
Localización : Bilbao

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Risanti el Dom 2 Mayo 2010 - 14:20

Me alegra que sea util el video, y no hay nada que agraceder.. Siempre que se pueda ayudar en algo hay que hacerlo.. mas aun en estos temas que aveces la informacion disponible es menor.
Hay que compartir conocimientos, experiencias y dudas.. ya que eso no ayuda a todos...

y a seguir.. utilizando Software libre.. en nuestros proyectos.


Atte.
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

https://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

MPLAB PWM servmotor

Mensaje por cmier001 el Vie 2 Jul 2010 - 7:13

Hola Risanti, estuve viendo tus proyectos y estan rebuenos, busqué tu mail pero no lo pude encontrar debido a que llegue de un carrete y me puse a buscar unas respuetas de una programamcion de PIC con pwm y como ando trasnochado no encontré tu email. Te cuento que trabajo con mplab y uso normalmente el 877, 873, 84 etc. me gustaría poder saber si podemos compartir algunos datos de programación en C con compilador CC5x u otros, mi correo es: cesar@mieres.cl. Gracias y saludos desde Los Angeles, si puedes dame un numero para llamarte

cmier001
Nuevo Usuario
Nuevo Usuario

Mensajes : 1
Fecha de inscripción : 02/07/2010

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Risanti el Vie 2 Jul 2010 - 12:49

Hola Bienvenido Otro Chileno a este foro...
No hay problema te escribo para que tengas mi correo.

Saludos
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

https://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por chars8 el Sáb 26 Feb 2011 - 14:28

Hola que tal quisiera que me orientes mejor con el asunto de las librerías yo ya he agregado la linea "libc18f.lib" en el linker le doy "ok" , luego voy a compilar el programa y nada me sigue dando error.

Esto es lo que sale:
sdcc -mpic14 -p16f628a -V --debug -I/media/sda5/Diego/Piklab/parpadeo facil/ -c parapadeofacil.c
+ "/usr/bin/sdcpp" -nostdinc -Wall -I"/media/sda5/Diego/Piklab/parpadeo facil/" -obj-ext=.o -DSDCC_MODEL_SMALL -DSDCC=290 -DSDCC_REVISION=5416 -DSDCC_pic14 -D__pic14 -DSDCC_PROCESSOR="16f628a" -isystem "/usr/bin/../share/sdcc/include/pic14" -isystem "/usr/share/sdcc/include/pic14" -isystem "/usr/bin/../share/sdcc/include" -isystem "/usr/share/sdcc/include" -isystem "/usr/bin/../share/sdcc/include/pic" -isystem "/usr/share/sdcc/include/pic" "parapadeofacil.c"
parapadeofacil.c:4: 19: error: delay.h: No such file or directory

parapadeofacil.c:25: warning 112: function 'delay1mtcy' implicit declaration
parapadeofacil.c:27: warning 112: function 'delay1mtcy' implicit declaration
parapadeofacil.c:25: error 101: too many parameters
parapadeofacil.c:27: error 101: too many parameters

*** Salida con estado: 1 ***

Mi código es muy sencillo ya que estoy empezando con piklab y es el siguiente:

Código:

#include <pic16f628a.h>
#include <delay.h>

/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word at 0x2007 CONFIG = _WDT_OFF & _PWRTE_ON & _HS_OSC & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF;


void main()
{   
   TRISA = 0;
   TRISB = 0;
   
   PORTA = 0;
   PORTB = 0;
   


   while (1)
    {
        RB4=1;
        delay1mtcy(10);
        RB4=0;
        delay1mtcy(10);
   }
}
me puedes decir que estoy haciendo mal.....por favor me encanta linux y la verdad quisiera pasarme de win2 totalmente a S.L.

NOTA: el video que señalan arriba ya no esta disponible
saludos. Sad

chars8
Nuevo Usuario
Nuevo Usuario

Mensajes : 8
Fecha de inscripción : 26/02/2011

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por maigke el Sáb 26 Feb 2011 - 17:07

Saludos compañero y bienvenido

Veo que tu código es para un microcontrolador PIC16f628a. El problema que tienes no es de colocar la librería libc18f.lib. El problema es que precisamente la librería solo funciona con pic18 como el pic18f2550 , y no con pic16 como el que tu estás tratando de compilar.

El problema que tienes es que necesitas generar retardos para encender y apagar un led

Esta librería la edita el compañero per, y es para un xt de 4MHz
http://pic-linux.forosactivos.net/t211-libreria-de-retardos-sdcc

Y de esta el compañero arcachofo nos comparte una libreria para manejar LCD, dentro de la libreria tiene una funcion que genera retardos
http://pic-linux.forosactivos.net/t40-sdcc-driver-para-lcd-pic16f

Y en esta otra tiene que ver con una fuente realizada por Risanti haciendo uso de la libreria delay.h para PIC16, a través de la libreria de lcd que anteriormente te mencione
http://pic-linux.forosactivos.net/t76-voltimetro-de-0-a-50v-usando-pic-16f876-con-sdcc
(Por ciertto uno de los mas populares de este gran foro!)

Ojalá te sirva esta información y no te rindas al continuar tu camino de programar micros pic bajo Linux

avatar
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 41
Localización : Mexico

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por chars8 el Dom 27 Feb 2011 - 3:29

Muchas gracias por tu pronta respuesta...voy ha revisar la información y luego te cometo como me fue.... Smile

chars8
Nuevo Usuario
Nuevo Usuario

Mensajes : 8
Fecha de inscripción : 26/02/2011

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por maigke el Sáb 19 Mar 2011 - 20:12

Ok espero tu respuesta y nos cuentas si ya quedo resuelto el problema
avatar
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 41
Localización : Mexico

Volver arriba Ir abajo

Como usar las librerias

Mensaje por lejan el Mar 19 Abr 2011 - 20:37

Buenas, antes que nada muy buenos los aportes de todos y gracias por colaborar desinteresadamente,

estoy empezando con SDCC en linux (vengo de CCS en windows), mi duda sobre los archivos .lib que están en la carpeta /usr/share/sdcc/lib/pic16 , cómo puedo saber qué funciones tiene cada uno de esos archivos? cómo usarlas? intenté abrirlas con sdcclib -s archivo.lib pero me dice "file was no created with sdcclib", con qué las puedo abrir?
Verán en realidad no se bien que son esos archivos .lib, me imagino que manejan todas esas cosas que son comunes a todos los microcontroladores sobre el lenguaje, o sea: declaraciones de tipos de archivos (char, int, etc), funciones if, for,while, etc. o nada que ver? jaja

Saludos!!!

lejan
Nuevo Usuario
Nuevo Usuario

Mensajes : 4
Fecha de inscripción : 16/04/2011

Volver arriba Ir abajo

Re: sdcc fallo en el linker

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.