PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Korken
Inlägg: 2230 Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön
Inlägg
av Korken » 10 juli 2011, 16:15:35
Godagens!
Jag slåss fortfarande med att få floats att fungera 100%.
När jag gör en sqrtf så får jag errorn nedan och jag har ingen aning om hur jag ska fixa detta.
Compiling...
/usr/local/CodeSourcery/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset -std=gnu99 -O1 -g -c ./source/startup.c ./source/system_LPC17xx.c ./source/main.c ./source/misc.c ./source/leds.c ./source/timer.c ./source/uart.c ./source/pwm.c ./source/gps.c ./source/i2c.c ./source/itg3200.c ./source/bma180.c
Done!
Linking...
/usr/local/CodeSourcery/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset -T link.T -Wl,--build-id=none startup.o system_LPC17xx.o main.o misc.o leds.o timer.o uart.o pwm.o gps.o i2c.o itg3200.o bma180.o -o main.elf
main.o: In function `main':
/media/FCB7-6FF5/Quadrocopter/Koder/Quad_code/./source/main.c:33: undefined reference to `sqrtf'
collect2: ld returned 1 exit status
make: *** [main.elf] Error 1
Hat någon en ide?
Samma sak händer med andra funktioner.
Men multiplikation och division fungerar.
Min Makefil:
CC = /usr/local/CodeSourcery/bin/arm-none-eabi-gcc
COMMON = -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset
CFLAGS = $(COMMON) -std=gnu99 -O1 -g
LDFLAGS = $(COMMON) -T link.T -Wl,--build-id=none
DIR = ./source/
SRCC = $(DIR)startup.c $(DIR)system_LPC17xx.c $(DIR)main.c $(DIR)misc.c $(DIR)leds.c
SRCC += $(DIR)timer.c $(DIR)uart.c $(DIR)pwm.c $(DIR)gps.c $(DIR)i2c.c $(DIR)itg3200.c
SRCC += $(DIR)bma180.c
SRCO = startup.o system_LPC17xx.o main.o misc.o leds.o timer.o uart.o pwm.o gps.o i2c.o
SRCO += itg3200.o bma180.o
all: clean main.elf
main.o: $(SRC)
@echo "Compiling..."
$(CC) $(CFLAGS) -c $(SRCC)
@echo "Done!"
main.elf: main.o
@echo "Linking..."
$(CC) $(LDFLAGS) $(SRCO) -o main.elf
@echo "Done!"
clean:
@echo "Cleaning..."
rm -f *.o *.elf
rehnmaak
Inlägg: 2204 Blev medlem: 13 december 2005, 01:43:41
Inlägg
av rehnmaak » 10 juli 2011, 16:33:14
Jag tror du behöver lägga till -lm för att länka med matte rutinerna.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 10 juli 2011, 16:43:55
http://www.codesourcery.com/sgpp/portal ... cslibc.pdf
"CSLIBC, The CodeSourcery C Library"
Sidan 19:
This chapter documents the mathematical functions provided by CSLIBC.
In addition to including math.h in your source code, you must link with
the math library (-lm) to use the functions listed in this chapter.
Korken
Inlägg: 2230 Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön
Inlägg
av Korken » 10 juli 2011, 20:55:04
Oj, glömde skriva att jag har testat med -lm och att länka biblioteket direkt utan att det har hjälpt.
Men tack för länken sodjan.
rehnmaak
Inlägg: 2204 Blev medlem: 13 december 2005, 01:43:41
Inlägg
av rehnmaak » 10 juli 2011, 22:17:52
Du skulle kunna kolla att det biblioteket verkligen innehåller sqrtf()
kör objdump -t /sökväghär/libm.a | grep sqrtf
Korken
Inlägg: 2230 Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön
Inlägg
av Korken » 11 juli 2011, 10:13:15
Har kollat det nu och den finns där.
Jag har nu skrivit egna funktioner för det, men man tycker att det borde fungera.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 11 juli 2011, 10:34:01
> Oj, glömde skriva att jag har testat med -lm
Jag är inte helt säkert på hur sådant här fungerar, men om du använder
-lm switchen, borde inte det synas i make filen !?
Googlade lite till och hittade bl.a :
http://stackoverflow.com/questions/9068 ... g-in-xcode
I've been reading that by default there is an -mthumb compiler flag which reduces code size by 35%.
However, in a floating-point calculation intensive app like mine, this is not an good option, like apple says.
I'd like to try it out if it changes anything.
Har du provat med "-marm" istället för "-mthumb" ?
Se även :
http://stackoverflow.com/questions/2057 ... -thumb-vfp
Och :
http://free-electrons.com/doc/arm-linux.odp (Speciellt bild 19 och 20).
"-mthumb-interwork" verkar också ha med detta att göra...
EDIT: La till en PDF av ODP'n ifall du inte kan läsa OO filer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.