64位Linux下编译cximage动态库

来源:互联网 发布:免费域名注册网站 编辑:程序博客网 时间:2024/05/24 05:55

首先,在64位Linux下编译cximage静态库,请参考文章:

64位Linux编译cximage手记




我在第6步的时候遇到一个问题,按照文中作者提示,输入
CPPFLAGS="=-fPIC"  ./configure --with-extra-includes=/home/cximage599c/cximage/jasper/include/ 
结果编译静态库失败了,不知道是什么原因。

最后我的解决办法是到cximage每一个库目录下,依次修改每一个makefile,增加“-fpic”命令
CFLAGS = -O2 -fPIC CPPFLAGS += -fPIC 
才编译成功。

由于项目需要,需要将多个动态库和cximage库一起链接在一个工程里,生成一个动态库。然而,将 多个动态库和多个静态库如何一起链接生成一个动态库的方法,很遗憾,我并没有找着。还好,最终我实现了将cximage这8个静态库编译成一个动态库,从而和其他动态库一起成功链接到我的工程代码里。

最后,将8个静态库,编译成一个动态库,我的makefile文件如下:

CC = gccLD = ldLIBRARY = libCX.soOBJECTS = libCxImage.a libj2k.a libjasper.a libjbig.a libjpeg.a libpng.a libtiff.a libzlib.a        all:$(LIBRARY)$(LIBRARY):$(OBJECTS)rm -f $(LIBRARY)$(LD) -fPIC -shared --whole-archive  $(OBJECTS) --no-whole-archive  -soname $@ -o $@ @echo "FINISHED CREATING $(LIBRARY) LIBRARY" @echo "-----------------------------------------------------" libCxImage.a: $(MAKE) $(AM_MAKEFLAGS) -f libCxImage.mklibj2k.a: $(MAKE) $(AM_MAKEFLAGS) -f libj2k.mklibjasper.a: $(MAKE) $(AM_MAKEFLAGS) -f libjasper.mklibjbig.a: $(MAKE) $(AM_MAKEFLAGS) -f libjbig.mklibjpeg.a: $(MAKE) $(AM_MAKEFLAGS) -f libjpeg.mklibpng.a: $(MAKE) $(AM_MAKEFLAGS) -f libpng.mklibtiff.a: $(MAKE) $(AM_MAKEFLAGS) -f libtiff.mklibzlib.a: $(MAKE) $(AM_MAKEFLAGS) -f libzlib.mk

这里附上我自己编译的cximage静态库和动态库,均可放心使用
cximage库linux版本

项目中测试发现,linux下,cximage库和cairo绘图库一起引用的话,会造成“CAIRO_STATUS_NO_MEMORY”,导致cairo无法绘制出图片,经过排查,发现是cximage的构造方法在编译阶段对内存进行了操作导致的。所以,如果有同样需求的,建议不要同时引用这两个库。

0 0