解决undefine reference to '__aeabi_idiv' undefine reference to '__aeabi_idivmod'错误

undefine reference to '__aeabi_idiv'

undefine reference to '__aeabi_idivmod'


我的交叉编译器的版本是arm-none-linux-gnueabi/4.3.2


makefile如下

CC      = arm-linux-gcc
LD      = arm-linux-ld
AR      = arm-linux-ar
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump

LIB          :=-lgcc -L/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2
INCLUDEDIR     := $(shell pwd)/include
CFLAGS         := -w
CPPFLAGS       := -nostdinc -I$(INCLUDEDIR)

export     CC AR LD OBJCOPY OBJDUMP INCLUDEDIR CFLAGS CPPFLAGS

objs := start.o clock.o main.o  sdram.o  nand.o huitu_main.o lib/libc.a  malloc/memory.a dev/dev.a chinesechess/chinesechess.a

lcd.bin: $(objs)
    ${LD} -Tlcd.lds -o lcd.elf $^ $(LIB)
    ${OBJCOPY} -O binary -S lcd.elf $@
    ${OBJDUMP} -D lcd.elf > lcd.dis

.PHONY : lib/libc.a
lib/libc.a:
    cd lib; make; cd ..

chinesechess/chinesechess.a:
    make -C chinesechess all

malloc/memory.a:
    make -C malloc all
    
dev/dev.a:
    make -C dev all

    
%.o:%.c
    ${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

%.o:%.S
    ${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

clean:
    make  clean -C chinesechess
    make  clean -C lib
    make  clean -C dev
    make  clean -C malloc
    rm -f  *.elf *.dis *.o *.bak *.a

解决方法:

需要在连接的时候链接这个LIB          :=-lgcc -L/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2

然后进行编译的时候会提醒没有raise函数,自己写个这个函数like this

int  raise(int signum)

{

   return 0//什么都不干

}


再次编译就会通过了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值