jimever 发表于 2006-10-7 20:47:21

编译imagemagick出错

要在C中使用ImageMagick,在程序中调用IM自带的example中的一段,编译时提示无数的错误(不是.c文件错误,都是imagemagick自带的.o文件的错误),比如:
./libMagick.a(magick_libMagick_la-xml-tree.o): In function `NewXMLTree':
/root/myproject/magick/xml-tree.c:1770:undefined reference to `__ctype_b_loc''
arm-elf-ld: Dwarf Error: Invalid or unhandled FORM value: 14.

我是把libMagick.a和libWand.a这两个拷到项目lib目录里了
我的编译环境是arm的,有没可能是这个交叉编译环境版本的问题?

mozilla 发表于 2006-10-8 08:53:32

libMagick.a需要其他库支持

jimever 发表于 2006-10-8 14:05:09

哦,还需要什么?怎么做。
那么不是ImageMagick的问题了吧,我的makefile里也加上libMagick.a和libWand.a了。

mozilla 发表于 2006-10-8 16:03:21

undefined reference to `__ctype_b_loc''
你加了-lc参数没?不加应该也没问题,一般C库会被自动链上的,__ctype_b_loc应该属于C语言库,可能你的C语言库没这个函数。
还有哪些undefined reference to?

jimever 发表于 2006-10-8 20:09:41

我的编译环境是arm的交叉编译环境,arm-elf-gcc是3.0的(arm_tools/lib/gcc-lib/arm-elf/3.0,随便问下,怎么看arm-elf的版本:),ImageMagick是6.2.9的。
贴出我的Makefile,大虾们帮忙看看。

Makefile:
----------------------------------begin--
.SUFFIXES : .x .o .c .s

BUILD_ROOT = /usr/local/arm_tools/
ROMDISK_ROOT=../romdisk/
PROJECT_DIR=../Library/include/         //--magick和wand目录下的.h文件都拷进来了

lib=${BUILD_ROOT}arm-elf/lib
lib1=${BUILD_ROOT}lib/gcc-lib/arm-elf/3.0/
include=${BUILD_ROOT}arm-elf/inc


CC=arm-elf-gcc -I${include} -I$(CAMERA_DIR) -O1 -c -DEMBED \
        -DUSE_SERVER_PUSH -fsigned-char -march=armv4 -mtune=arm7tdmi -mapcs-32
AS=arm-elf-as
LD=arm-elf-ld

WEC_LDFLAGS = -L. -L../Library/530/lib -L${lib} -L${lib1} -T${lib}/elf2flt.ld

OBJS = Main.o Cgi.o Driver.o Config_Frequency.o GetCapability.o //....o文件比较多,略过
#

OTHEROBJS =

LIBS= --start-group -lma -lW530

TARGET = project

LIBS+= -lMagick -lWand -lmc -lpthread -lc -lgcc --end-group//--lMagick和lWand是ImageMagick的两个静态库.a文件,这两个静态库拷到项目目录里了

#-lssl -lcrypto

all: $(TARGET).x
        elf2flt -s 229376 -o $(TARGET).flat $(TARGET).x >/dev/null 2>&1
        flthdr -z $(TARGET).flat
        cp $(TARGET).flat ${ROMDISK_ROOT}bin/$(TARGET).flat

$(TARGET).x: $(OBJS) $(OTHEROBJS)
        $(LD) -o $(TARGET).x $(WEC_LDFLAGS) $(OTHEROBJS) $(OBJS) $(LIBS)
        rm -f $(TARGET).x
        $(LD) -o $(TARGET).x $(WEC_LDFLAGS) -r -d $(OTHEROBJS) $(OBJS) $(LIBS) -Map $(TARGET).map

.c.o:
        $(CC) -o $*.o $*.c

.s.o:
        $(AS) -ahld -o $*.o $*.s > NULL
        del NULL


clean:
        rm -f *.o
        rm -f *.x*.~c
        rm -f *.flat
        rm -f *.map
        rm -f romfs.img
        rm -f $(OBJS) *.x *.map tmp

.PHONY : $(TARGET).x
----------------------------------end---
页: [1]
查看完整版本: 编译imagemagick出错