I don't consider myself an expert but here are my thoughts...
Probably better to name the library something other than the name of the
routine, like mydelay.lib.
Instead of putting delay.lib in the object list, you could try "sdcc ... -l
mydelay"
Good luck,
Douglas
On Nov 30, 2012, at 1:24 PM, Caio Rodrigues <blackdog...@gmail.com> wrote:
> Hello users of the SDCC list:
>
> I am trying to create a pic18f4550 a custom library and I get the error:
> "delay.lib" is not a valid coff object or archive returned errorcode 256.
> I've attached the files used in this report.
>
> I am using:
> Ubuntu 12.04
> SDCC - 3.2.0 /usr/local/sdcc /usr/local/bin/sdcc
> gplink-0.13.7 beta
> gpasm-0.13.7 beta
> MCU: pic18f4450
>
> I am trying to create my own test library but I get this error:
>
>
> $ sdcc -V --debug -c delay.c
> + "/usr/local/bin/sdcpp" -nostdinc -Wall -obj-ext=.rel -D__SDCC_MODEL_SMALL
> -DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_2_0
> -DSDCC=320 -D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_mcs51
> -DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__
> -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem
> "/usr/local/bin/../share/sdcc/include/mcs51" -isystem
> "/usr/local/share/sdcc/include/mcs51" -isystem
> "/usr/local/bin/../share/sdcc/include" -isystem
> "/usr/local/share/sdcc/include" "delay.c"
> + "/usr/local/bin/sdas8051" -plosgffwc "delay.rel" "delay.asm"
>
> I got : delay.rel
>
>
> And then I do:
> $ sdcclib delay.lib delay.rel
>
> I got : delay.lib
>
> $ sdcclib -s delay.lib
> delay.rel:
> .__.ABS.
> C$delay.c$43$1$5
> C$delay.c$44$1$5
> C$delay.c$36$1$4
> C$delay.c$29$1$2
> C$delay.c$45$1$5
> C$delay.c$37$1$4
> C$delay.c$46$1$5
> G$delay1s$0$0
> G$delaysx$0$0
> _delay1s
> G$delay500ms$0$0
> _delaysx
> XG$delay1s$0$0
> _delay500ms
> XG$delaysx$0$0
> A$delay$200
> A$delay$120
> A$delay$211
> A$delay$121
> A$delay$140
> A$delay$204
> A$delay$160
> A$delay$133
> A$delay$124
> XG$delay500ms$0$0
> A$delay$134
> A$delay$207
> A$delay$153
> A$delay$135
> A$delay$126
> A$delay$181
> A$delay$136
> A$delay$127
> A$delay$118
> A$delay$191
> A$delay$164
> A$delay$128
> A$delay$192
> A$delay$183
> A$delay$129
> A$delay$184
> A$delay$157
> A$delay$185
> A$delay$158
> A$delay$195
> A$delay$186
> A$delay$159
> C$delay.c$23$0$0
> A$delay$197
> C$delay.c$30$1$2
> A$delay$198
> A$delay$189
> A$delay$199
> C$delay.c$32$1$2
> C$delay.c$40$1$4
> C$delay.c$35$1$2
>
>
> And then:
>
> $ sdcc -V --vc --debug -mpic16 -p18f4550 --main-return --use-non-free
> -L`pwd` delay.lib main.c
>
> + "/usr/local/bin/sdcpp" -nostdinc -Wall -Dpic18f4550 -D__18f4550
> -D__SDCC_PIC18F4550 -DSTACK_MODEL_SMALL -D__STACK_MODEL_SMALL -obj-ext=.o
> -D__SDCC_USE_NON_FREE -DSDCC_USE_NON_FREE -D__SDCC=3_2_0 -DSDCC=320
> -D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_pic16 -DSDCC_pic16
> -D__pic16 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__
> -D__STDC_NO_VLA__ -isystem "/usr/local/bin/../share/sdcc/include/pic16"
> -isystem "/usr/local/share/sdcc/include/pic16" -isystem
> "/usr/local/bin/../share/sdcc/include" -isystem
> "/usr/local/share/sdcc/include" -isystem
> "/usr/local/bin/../share/sdcc/non-free/include/pic16" -isystem
> "/usr/local/share/sdcc/non-free/include/pic16" -isystem
> "/usr/local/bin/../share/sdcc/non-free/include" -isystem
> "/usr/local/share/sdcc/non-free/include" "main.c"
> + "gpasm" -DSTACK_MODEL_SMALL -D__STACK_MODEL_SMALL -g -o "main.o" -c
> "main.asm"
> + "gplink" -I"/home/caio/FinalProject/mcu/organizar/proj3"
> -I"/usr/local/bin/../share/sdcc/lib/pic16"
> -I"/usr/local/share/sdcc/lib/pic16"
> -I"/usr/local/bin/../share/sdcc/non-free/lib/pic16"
> -I"/usr/local/share/sdcc/non-free/lib/pic16" -w -r -o "main" "main.o"
> crt0i.o "delay.lib" "libdev18f4550.lib" "libsdcc.lib"
> error: "delay.lib" is not a valid coff object or archive
> message: using default linker script "/usr/share/gputils/lkr/18f4550.lkr"
> + "gplink" -I"/home/caio/FinalProject/mcu/organizar/proj3"
> -I"/usr/local/bin/../share/sdcc/lib/pic16"
> -I"/usr/local/share/sdcc/lib/pic16"
> -I"/usr/local/bin/../share/sdcc/non-free/lib/pic16"
> -I"/usr/local/share/sdcc/non-free/lib/pic16" -w -r -o "main" "main.o"
> crt0i.o "delay.lib" "libdev18f4550.lib" "libsdcc.lib" returned errorcode 256
>
>
> I know the sdcc has already a delay library but, I would like to learn how
> to create libraries.
>
> I don't understand what is a ''valid coff object or archive ' and why the
> this error happens. I also would like to know how to create libraries like
> the native library of the SDCC like libc18f.
>
>
>
>
>
>
> <default.h><delay.c><delay.h><main.c>------------------------------------------------------------------------------
> Keep yourself connected to Go Parallel:
> TUNE You got it built. Now make it sing. Tune shows you how.
> http://goparallel.sourceforge.net_______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user
------------------------------------------------------------------------------
Keep yourself connected to Go Parallel:
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user