1、源码下载
下载路径:https://github.com/libjpeg-turbo/libjpeg-turbo
2、NDK编译脚本
配置NDK环境变量
如何配置环境变量,这里不再赘述,有需要者可自行百度。
新建目录build.android
build.andorid目录中新建jni目录
这些目录是为了以后区分其他平台,如ios、win32等。
在jni目录中新增Android.mk、Application.mk文件
重点在就在这另个文件中,如下:
Android.mk
#
# JNI
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Jpeg-turbo
LOCAL_C_INCLUDES += ../../
LOCAL_SRC_ROOT = ../../
LOCAL_SRC_PATH := $(LOCAL_SRC_ROOT)
LOCAL_SRC_FILES := $(foreach dir, ${LOCAL_SRC_PATH}, $(wildcard $(dir)/*.c))
# LIB_SRC := ../../event.c \
# ../../evthread.c \
# ../../evthread_pthread.c \
# ../../buffer.c \
# ../../bufferevent.c \
# ../../bufferevent_filter.c \
# ../../bufferevent_pair.c \
# ../../listener.c \
# ../../bufferevent_ratelim.c \
# ../../evmap.c \
# ../../log.c \
# ../../evutil.c \
# ../../evutil_time.c \
# ../../evutil_rand.c \
# ../../select.c \
# ../../poll.c \
# ../../epoll.c \
# ../../signal.c \
# ../../event_tagging.c \
# ../../http.c \
# ../../evdns.c \
# ../../evrpc.c \
# ../../bufferevent_sock.c \
# ../../strlcpy.c
# LOCAL_SRC_FILES := $(LIB_SRC)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -landroid
LOCAL_CPPFLAGS += -g -Wall
LOCAL_CFLAGS += -g -Wall
LOCAL_CFLAGS += -fstack-protector
#开启PIE(Position Independent Executables)
LOCAL_CFLAGS += -fpie -pie
include $(BUILD_STATIC_LIBRARY)
注释掉的部分为单独依赖各个源文件,本次采用遍历方式。
Application.mk
APP_STL := gnustl_static
APP_OPTIM := release
APP_ABI := armeabi arm64-v8a
APP_PLATFORM := android-11
APP_CPPFLAGS := -frtti
APP_CPPFLAGS += -std=c++11
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -fpermissive
这里仅编译armeabi、arm64-v8a,如需其他架构,可以自行修改APP_ABI属性。
build.cmd
为了方便执行脚本,还可以创建build.cmd文件
rm -fr ../obj
@call ndk-build.cmd -B
@echo ***************************compile finish**********************************
pause