韦东山Linux嵌入式课程社区
直播中

陈畅妮

7年用户 161经验值
私信 关注

请问怎样才能正常编译这些三角函数?

在进入嵌入式开发时,只要包含有sin,cos,sqrt 等三角函数的时候总是无法正常的编译,而且会产生一些很奇怪的错误
lcd.o(.text+0x85c): In function `draw_heart':
: undefined reference to `cos'
lcd.o(.text+0x870): In function `draw_heart':
: undefined reference to `__muldf3'
lcd.o(.text+0x874): In function `draw_heart':
: undefined reference to `__fixdfsi'
lcd.o(.text+0x884): In function `draw_heart':
: undefined reference to `sin'
lcd.o(.text+0x898): In function `draw_heart':
: undefined reference to `__muldf3'
lcd.o(.text+0x89c): In function `draw_heart':
: undefined reference to `__fixdfsi'
lcd.o(.text+0x8b0): In function `draw_heart':
: undefined reference to `__floatsidf'
lcd.o(.text+0x8b4): In function `draw_heart':
: undefined reference to `sqrt'
lcd.o(.text+0x8b8): In function `draw_heart':
: undefined reference to `__fixdfsi'
lcd.o(.text+0x8e0): In function `draw_heart':
: undefined reference to `__adddf3'
lcd.o(.text+0x8fc): In function `draw_heart':
: undefined reference to `__ltdf2'
make: *** [lcd.bin] Error 1


我要怎样才能正常编译呢?makefile如下:
CFLAGS         := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding
lcd.bin : start.S  lcd.c  
        ARM-linux-gcc $(CFLAGS) -c -o start.o start.S
        arm-linux-gcc $(CFLAGS) -c -o lcd.o lcd.c
        arm-linux-ld -Ttext 0x0000000 start.o lcd.o -o lcds_elf
        arm-linux-ld -Tlcd.lds  start.o lcd.o  -o lcds_elf
        arm-linux-objcopy -O binary -S lcds_elf lcd.bin
        arm-linux-objdump -D -m arm  lcds_elf > lcd.dis
clean:
        rm -f   lcd.dis lcd.bin lcds_elf *.o

回帖(4)

赵敏

2019-6-4 13:01:39
老师,我具体应该加在什么地方呢?我加上了还是出现了之前的那种错误
举报

薛静斗

2019-6-4 13:07:19
这个后面加上试试   CFLAGS         := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -lm
举报

刘梅

2019-6-4 13:17:11
好像还是不行
book@book-desktop:~/Desktop/lcd$ make
arm-linux-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -lm -c -o start.o start.S
arm-linux-gcc: -lm: linker input file unused because linking not done
arm-linux-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -lm -c -o lcd.o lcd.c
arm-linux-gcc: -lm: linker input file unused because linking not done
arm-linux-ld -Ttext 0x0000000 start.o lcd.o -o lcds_elf
lcd.o(.text+0x85c): In function `draw_heart':
: undefined reference to `cos'
lcd.o(.text+0x870): In function `draw_heart':
: undefined reference to `__muldf3'
lcd.o(.text+0x874): In function `draw_heart':
: undefined reference to `__fixdfsi'
lcd.o(.text+0x884): In function `draw_heart':
: undefined reference to `sin'
lcd.o(.text+0x898): In function `draw_heart':


这个问题都已经困扰我好几天了,我就调用了一个sin函数,死活都编译不过
举报

张奥

2019-6-4 13:22:40
我试了一下没什么问题,用的4.4.3的编译器
我建议你换个高点版本编译器试试
举报

更多回帖

发帖
×
20
完善资料,
赚取积分