JNI编译cximage库(附android.mk和application.mk文件及详细步骤)
来源:互联网 发布:客户信息管理系统php 编辑:程序博客网 时间:2024/05/14 13:02
我们知道cximage是一个非常强大的C++图片库,其依赖于jasper库,png库,jpeg库还有其他的几种库,因我们项目中只用到了这三个库,所以我只使用jni编译这三种库。
先讲一下jni编译成动态so库的几种方式。
1.使用android studio提供的ndk-build编译的方式。
2.使用linux的交叉编译器gcc编译方式。
3.使用tool-chain工具链进行编译。
4.使用android studio的CMakeLists.txt
本文使用的是ndk-build的方式
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := cximage#源文件指向LOCAL_SRC_FILES :=$(LOCAL_PATH)/cximage599c/cximage/CxImage/tif_xfile.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximabmp.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximadsp.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximaenc.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximaexif.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximage.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximagif.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximahist.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximaico.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximainfo.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximaint.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximaj2k.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximajas.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximajbg.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximajpg.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximalpha.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximalyr.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximamng.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximapal.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximapcx.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximapng.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximasel.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximatga.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximath.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximatif.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximatran.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximawbmp.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximawmf.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/ximawnd.cpp $(LOCAL_PATH)/cximage599c/cximage/CxImage/xmemfile.cpp#加入jasper动态库LOCAL_LDFLAGS := -L$(LOCAL_PATH)/jasper/local/armeabi -ljasper#加入png和jpeg动态库LOCAL_LDFLAGS += -L$(LOCAL_PATH)/png/libs/armeabi -lpng -L$(LOCAL_PATH)/jpeg/libs/armeabi -ljpegLOCAL_LDLIBS := -lz#加入头文件目录LOCAL_C_INCLUDES := $(LOCAL_PATH)/cximage599c/admin $(LOCAL_PATH)/cximage599c/cximage $(LOCAL_PATH)/cximage599c/cximage/.deps $(LOCAL_PATH)/cximage599c/cximage/CxImage $(LOCAL_PATH)/cximage599c/cximage/CxImage/.deps $(LOCAL_PATH)/cximage599c/cximage/doc $(LOCAL_PATH)/cximage599c/cximage/doc/doxy $(LOCAL_PATH)/cximage599c/cximage/doc/doxy/html $(LOCAL_PATH)/cximage599c/cximage/j2k $(LOCAL_PATH)/cximage599c/cximage/j2k/.deps $(LOCAL_PATH)/cximage599c/cximage/jasper $(LOCAL_PATH)/cximage599c/cximage/jasper/include $(LOCAL_PATH)/cximage599c/cximage/jasper/include/jasper $(LOCAL_PATH)/cximage599c/cximage/jbig $(LOCAL_PATH)/cximage599c/cximage/jbig/.deps $(LOCAL_PATH)/cximage599c/cximage/jpeg $(LOCAL_PATH)/cximage599c/cximage/jpeg/.deps $(LOCAL_PATH)/cximage599c/cximage/png $(LOCAL_PATH)/cximage599c/cximage/png/.deps $(LOCAL_PATH)/cximage599c/cximage/tiff $(LOCAL_PATH)/cximage599c/cximage/tiff/.deps $(LOCAL_PATH)/cximage599c/cximage/zlib $(LOCAL_PATH)/cximage599c/cximage/zlib/.depsinclude $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := armeabiAPP_OPIM :=debugAPP_STL := stlport_staticAPP_CPPFLAGS := -fexceptions -frtti #允许异常功能,及运行时类型识别#APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功能APP_CPPFLAGS +=-fpermissive #此项有效时表示宽松的编译形式,比如没有用到的代码中有错误也可以通过编译;使用GNU STL时不用此项std::string 居然编译不通过!!
通过Application.mk文件可以知道我要生成armeabiCPU架构的so文件
因为cximage依赖于其他三个库,下面附上jasper,png和jpeg的编译方式
1.jasper库的编译,注意jasper库依赖于jpeg库,所以先把jpeg库编译成功
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jasper#源文件指向LOCAL_SRC_FILES := $(LOCAL_PATH)/jasper/bmp_cod.c $(LOCAL_PATH)/jasper/bmp_dec.c $(LOCAL_PATH)/jasper/bmp_enc.c $(LOCAL_PATH)/jasper/jas_cm.c $(LOCAL_PATH)/jasper/jas_debug.c $(LOCAL_PATH)/jasper/jas_getopt.c $(LOCAL_PATH)/jasper/jas_icc.c $(LOCAL_PATH)/jasper/jas_iccdata.c $(LOCAL_PATH)/jasper/jas_image.c $(LOCAL_PATH)/jasper/jas_init.c $(LOCAL_PATH)/jasper/jas_malloc.c $(LOCAL_PATH)/jasper/jas_seq.c $(LOCAL_PATH)/jasper/jas_stream.c $(LOCAL_PATH)/jasper/jas_string.c $(LOCAL_PATH)/jasper/jas_tvp.c $(LOCAL_PATH)/jasper/jas_version.c $(LOCAL_PATH)/jasper/jp2_cod.c $(LOCAL_PATH)/jasper/jp2_dec.c $(LOCAL_PATH)/jasper/jp2_enc.c $(LOCAL_PATH)/jasper/jpc_bs.c $(LOCAL_PATH)/jasper/jpc_cs.c $(LOCAL_PATH)/jasper/jpc_dec.c $(LOCAL_PATH)/jasper/jpc_enc.c $(LOCAL_PATH)/jasper/jpc_math.c $(LOCAL_PATH)/jasper/jpc_mct.c $(LOCAL_PATH)/jasper/jpc_mqcod.c $(LOCAL_PATH)/jasper/jpc_mqdec.c $(LOCAL_PATH)/jasper/jpc_mqenc.c $(LOCAL_PATH)/jasper/jpc_qmfb.c $(LOCAL_PATH)/jasper/jpc_t1cod.c $(LOCAL_PATH)/jasper/jpc_t1dec.c $(LOCAL_PATH)/jasper/jpc_t1enc.c $(LOCAL_PATH)/jasper/jpc_t2cod.c $(LOCAL_PATH)/jasper/jpc_t2dec.c $(LOCAL_PATH)/jasper/jpc_t2enc.c $(LOCAL_PATH)/jasper/jpc_tagtree.c $(LOCAL_PATH)/jasper/jpc_tsfb.c $(LOCAL_PATH)/jasper/jpc_util.c $(LOCAL_PATH)/jasper/jpg_dec.c $(LOCAL_PATH)/jasper/jpg_dummy.c $(LOCAL_PATH)/jasper/jpg_enc.c $(LOCAL_PATH)/jasper/jpg_val.c $(LOCAL_PATH)/jasper/mif_cod.c $(LOCAL_PATH)/jasper/pgx_cod.c $(LOCAL_PATH)/jasper/pgx_dec.c $(LOCAL_PATH)/jasper/pgx_enc.c $(LOCAL_PATH)/jasper/pnm_cod.c $(LOCAL_PATH)/jasper/pnm_dec.c $(LOCAL_PATH)/jasper/pnm_enc.c $(LOCAL_PATH)/jasper/ras_cod.c $(LOCAL_PATH)/jasper/ras_dec.c $(LOCAL_PATH)/jasper/ras_enc.c#导出头文件LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\ $(LOCAL_PATH)/include/#加入头文件LOCAL_C_INCLUDES := $(LOCAL_PATH)/jasper/.deps $(LOCAL_PATH)/jasper/include $(LOCAL_PATH)/jasper/include/jasper#LOCAL_CFLAGS := -I$(LOCAL_PATH)/libjpegLOCAL_LDFLAGS := -L$(LOCAL_PATH)/jpeg/libs/armeabi -ljpeginclude $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := armeabiAPP_OPIM :=debug#引入Android原生支持库,如stdc++APP_STL := stlport_staticAPP_CPPFLAGS := -fexceptions -frtti #允许异常功能,及运行时类型识别#APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功能APP_CPPFLAGS +=-fpermissive #此项有效时表示宽松的编译形式,比如没有用到的代码中有错误也可以通过编译;使用GNU STL时不用此项std::string 居然编译不通过!!
2.jpeg库的编译
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jpeg#源文件指向#LOCAL_SRC_FILES := $(LOCAL_PATH)/jpeg-9b/cdjpeg.c $(LOCAL_PATH)/jpeg-9b/cjpeg.c $(LOCAL_PATH)/jpeg-9b/ckconfig.c $(LOCAL_PATH)/jpeg-9b/djpeg.c $(LOCAL_PATH)/jpeg-9b/example.c $(LOCAL_PATH)/jpeg-9b/jaricom.c $(LOCAL_PATH)/jpeg-9b/jcapimin.c $(LOCAL_PATH)/jpeg-9b/jcapistd.c $(LOCAL_PATH)/jpeg-9b/jcarith.c $(LOCAL_PATH)/jpeg-9b/jccoefct.c $(LOCAL_PATH)/jpeg-9b/jccolor.c $(LOCAL_PATH)/jpeg-9b/jcdctmgr.c $(LOCAL_PATH)/jpeg-9b/jchuff.c $(LOCAL_PATH)/jpeg-9b/jcinit.c $(LOCAL_PATH)/jpeg-9b/jcmainct.c $(LOCAL_PATH)/jpeg-9b/jcmarker.c $(LOCAL_PATH)/jpeg-9b/jcmaster.c $(LOCAL_PATH)/jpeg-9b/jcomapi.c $(LOCAL_PATH)/jpeg-9b/jcparam.c $(LOCAL_PATH)/jpeg-9b/jcprepct.c $(LOCAL_PATH)/jpeg-9b/jcsample.c $(LOCAL_PATH)/jpeg-9b/jctrans.c $(LOCAL_PATH)/jpeg-9b/jdapimin.c $(LOCAL_PATH)/jpeg-9b/jdapistd.c $(LOCAL_PATH)/jpeg-9b/jdarith.c $(LOCAL_PATH)/jpeg-9b/jdatadst.c $(LOCAL_PATH)/jpeg-9b/jdatasrc.c $(LOCAL_PATH)/jpeg-9b/jdcoefct.c $(LOCAL_PATH)/jpeg-9b/jdcolor.c $(LOCAL_PATH)/jpeg-9b/jddctmgr.c $(LOCAL_PATH)/jpeg-9b/jdhuff.c $(LOCAL_PATH)/jpeg-9b/jdinput.c $(LOCAL_PATH)/jpeg-9b/jdmainct.c $(LOCAL_PATH)/jpeg-9b/jdmarker.c $(LOCAL_PATH)/jpeg-9b/jdmaster.c $(LOCAL_PATH)/jpeg-9b/jdmerge.c $(LOCAL_PATH)/jpeg-9b/jdpostct.c $(LOCAL_PATH)/jpeg-9b/jdsample.c $(LOCAL_PATH)/jpeg-9b/jdtrans.c $(LOCAL_PATH)/jpeg-9b/jerror.c $(LOCAL_PATH)/jpeg-9b/jfdctflt.c $(LOCAL_PATH)/jpeg-9b/jfdctfst.c $(LOCAL_PATH)/jpeg-9b/jfdctint.c $(LOCAL_PATH)/jpeg-9b/jidctflt.c $(LOCAL_PATH)/jpeg-9b/jidctfst.c $(LOCAL_PATH)/jpeg-9b/jidctint.c $(LOCAL_PATH)/jpeg-9b/jmemansi.c $(LOCAL_PATH)/jpeg-9b/jmemdos.c $(LOCAL_PATH)/jpeg-9b/jmemmac.c $(LOCAL_PATH)/jpeg-9b/jmemmgr.c $(LOCAL_PATH)/jpeg-9b/jmemname.c $(LOCAL_PATH)/jpeg-9b/jmemnobs.c $(LOCAL_PATH)/jpeg-9b/jpegtran.c $(LOCAL_PATH)/jpeg-9b/jquant1.c $(LOCAL_PATH)/jpeg-9b/jquant2.c $(LOCAL_PATH)/jpeg-9b/jutils.c $(LOCAL_PATH)/jpeg-9b/rdbmp.c $(LOCAL_PATH)/jpeg-9b/rdcolmap.c $(LOCAL_PATH)/jpeg-9b/rdgif.c $(LOCAL_PATH)/jpeg-9b/rdjpgcom.c $(LOCAL_PATH)/jpeg-9b/rdppm.c $(LOCAL_PATH)/jpeg-9b/rdrle.c $(LOCAL_PATH)/jpeg-9b/rdswitch.c $(LOCAL_PATH)/jpeg-9b/rdtarga.c $(LOCAL_PATH)/jpeg-9b/transupp.c $(LOCAL_PATH)/jpeg-9b/wrbmp.c $(LOCAL_PATH)/jpeg-9b/wrgif.c $(LOCAL_PATH)/jpeg-9b/wrjpgcom.c $(LOCAL_PATH)/jpeg-9b/wrppm.c $(LOCAL_PATH)/jpeg-9b/wrrle.c $(LOCAL_PATH)/jpeg-9b/wrtarga.cLOCAL_SRC_FILES := jaricom.c jcapimin.c jcapistd.c jcarith.c jccoefct.c jccolor.c \ jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c \ jcomapi.c jcparam.c jcprepct.c jcsample.c jctrans.c jdapimin.c \ jdapistd.c jdarith.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c \ jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c \ jdmerge.c jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c \ jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jquant1.c \ jquant2.c jutils.c jmemmgr.c jmemnobs.c#导出头文件LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\ $(LOCAL_PATH)/include/#加入头文件#LOCAL_C_INCLUDES := $(LOCAL_PATH)/jpeg-9b/include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := allAPP_OPIM :=debugAPP_STL := stlport_staticAPP_CPPFLAGS := -fexceptions -frtti #允许异常功能,及运行时类型识别#APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功能APP_CPPFLAGS +=-fpermissive #此项有效时表示宽松的编译形式,比如没有用到的代码中有错误也可以通过编译;使用GNU STL时不用此项std::string 居然编译不通过!!
3.png库的编译
由于该库不是我编译的,同事编译的,直接给出编译好的.so文件
后续补充吧。
0 0
- JNI编译cximage库(附android.mk和application.mk文件及详细步骤)
- Android Application.mk和Android.mk 同在应用程序里的jni目录时交叉编译步骤
- Android JNI学习笔记(三)-编译文件Android.mk、Application.mk 与camke
- Android.mk和application.mk
- Android JNI之Android.mk、Application.mk
- Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk
- Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk
- Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk
- Android.mk和Application.mk文件中部分变量说明
- Android.mk和Application.mk文件语法规范说明及举例
- Android.mk和Application.mk文件语法规范说明及举例
- 编写Android.mk Application.mk文件
- Application.mk & Android.mk
- Android.mk 和Application.mk 示例
- JNI 导入.a库和编译.so的makefile(.mk)文件编写
- jni Android.mk文件分析
- Android jni编译时 Android.mk文件 规范说明
- Android Jni编译中Android.mk文件详解
- 纵表和横表的概念及其相互转换
- 高性能 HTTP服务器 qHttpd
- div 全屏居中
- openstack网络(neutron)模式之GRE的基本原理(转)
- C++变量属性大总结
- JNI编译cximage库(附android.mk和application.mk文件及详细步骤)
- 高性能Web服务器 Nginx
- [IO系统]09 直接IO与缓存IO
- Using a Callout for Deep Inspection of Stream Data
- mysql多字段排序,分数班级排序
- Python基础练习——输出质数
- 简单介绍 request response session
- Go Lang开发环境搭建配置
- 高性能Web服务器 Lighttpd