sdcc fallo en el linker
+4
Fernan
Geo
Risanti
santiago lafuente gracia
8 participantes
Página 1 de 1.
sdcc fallo en el linker
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.
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
- Mensajes : 4
Fecha de inscripción : 30/04/2010
Re: sdcc fallo en el linker
Hola Santiago..
Es posible que publiques el codigo fuente de este programa??.
atte.
RiSanti
Es posible que publiques el codigo fuente de este programa??.
atte.
RiSanti
Re: sdcc fallo en el linker
Te falta agregar libc18f.lib a los parámetros del enlazador, esta es la que contiene las referencias a itoa.
Re: sdcc fallo en el linker
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
- Mensajes : 4
Fecha de inscripción : 30/04/2010
Re: sdcc fallo en el linker
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
- Mensajes : 4
Fecha de inscripción : 30/04/2010
Re: sdcc fallo en el linker
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.
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.
fallo en el linker
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.
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
- Mensajes : 4
Fecha de inscripción : 30/04/2010
Re: sdcc fallo en el linker
Por nada, cuando se puede ayudar con mucho gusto .
Risanti, buena idea el video, no había pensado en incluir el archivo al proyecto.
santiago, a seguirle dando .
Risanti, buena idea el video, no había pensado en incluir el archivo al proyecto.
santiago, a seguirle dando .
Re: sdcc fallo en el linker
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
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
- Mensajes : 38
Fecha de inscripción : 17/12/2008
Edad : 61
Localización : Bilbao
Re: sdcc fallo en el linker
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
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
MPLAB PWM servmotor
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
- Mensajes : 1
Fecha de inscripción : 02/07/2010
Re: sdcc fallo en el linker
Hola Bienvenido Otro Chileno a este foro...
No hay problema te escribo para que tengas mi correo.
Saludos
RiSanti
No hay problema te escribo para que tengas mi correo.
Saludos
RiSanti
Re: sdcc fallo en el linker
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:
NOTA: el video que señalan arriba ya no esta disponible
saludos.
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);
}
}
NOTA: el video que señalan arriba ya no esta disponible
saludos.
chars8- Nuevo Usuario
- Mensajes : 8
Fecha de inscripción : 26/02/2011
Re: sdcc fallo en el linker
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
https://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
https://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
https://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
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
https://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
https://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
https://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
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Re: sdcc fallo en el linker
Muchas gracias por tu pronta respuesta...voy ha revisar la información y luego te cometo como me fue....
chars8- Nuevo Usuario
- Mensajes : 8
Fecha de inscripción : 26/02/2011
Re: sdcc fallo en el linker
Ok espero tu respuesta y nos cuentas si ya quedo resuelto el problema
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Como usar las librerias
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!!!
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
- Mensajes : 4
Fecha de inscripción : 16/04/2011
Temas similares
» DS1307 con sdcc
» SDCC - NF....
» SDCC USB libreria
» SDCC 3.0 Disponibleeeeee
» Uso de punteros en SDCC
» SDCC - NF....
» SDCC USB libreria
» SDCC 3.0 Disponibleeeeee
» Uso de punteros en SDCC
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.