undefined reference to memset?

volunteer01 2006-10-30 03:47:48
请问高手如何解决undefined reference to memset,memcpy, __divsi3之类的问题?
我用GCC编译一些嵌入式代码,可能是Makefile写得不对,连接器在链接时总是提示一些很奇怪的错误。比如我定义了一个二维数组,他就提示在数组定义的地方undefined reference to memcpy。数组定义如下:
int array[][2]=
{
{5, 2},
{6, 4},
};
我调用memset他也说找不到,但编译时他不报错,也就是说他找到了原形,但找不到定义。尽管我include了memory.h string.h math.h等,都没有用。而我用了一个除号,他就说undefined reference to __divsi3。我也试过在连接时用了 -lm -lc,但结果一样。
以下是Makefile

OBJECTS = startup.o target.o UART0.o au030.o auo30.o test.o io.o memory.o testjpeg.o jpeg.o lcd.o
LIB_DIRS = ../usr/local/arm/lib/gcc-lib/arm-linux/3.2.3/
CC = arm-linux-gcc -v
LD = arm-linux-ld -v
AR = arm-linux-ar -v
AS = arm-linux-as -v
CP = arm-linux-objcopy
OD = arm-linux-objdump
CFLAG = -I./ -c -fno-common -O2 -g
AFLAG = -ahls -mapcs-32 -o startup.o
LDFLAGS = -nostartfiles --cref
LDFLAGS += -lc -lm -Map boot.map -T link.lds
HEXFORMAT = -O ihex
BINFORMAT = -O binary
ODFLAG = -x --syms

all: test

test: boot.out
@ echo "Copying..."
$(CP) $(HEXFORMAT) boot.out boot.hex
$(CP) $(BINFORMAT) boot.out boot.bin
$(OD) $(ODFLAG) boot.out > boot.dmp

boot.out: $(OBJECTS) link.lds
@ echo "Linking..."
$(LD) $(LDFLAGS) $(OBJECTS) -o boot.out
$(LD) $(LDFLAGS) $(OBJECTS) -o boot.elf

startup.o: startup.S
@echo "Assembling..."
$(AS) $(AFLAG) startup.S > startup.lst
%.o: %.c
@echo "Compiling..."
$(CC) $(CFLAG) $<

clean:
rm -f *.o *.elf *.bin *.hex *.lst *.dmp *.map *.elf *.out

谢谢!
...全文
731 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧