• Ubuntu+NDK编译openssl(为了Android上使用libcurl且支持HTTPS协议)


    为了Android上使用libcurl且支持HTTPS协议,需要依赖openssl,因此先来了解一下如何编译OpenSSL
    1.编译ARM下的共享库(默认的)
    我使用的是guardianproject的openssl,它已经提供好了android的ndk makefile。
    git clone https://github.com/guardianproject/openssl-android.git
    然后直接cd到该目录,$NDK/ndk-build就行。
    注意默认的使用NDKr5b,如果没有该版本,请在jni/Application.mk中修改工具链版本
    这样可编译出ARM下的共享库(libcrypto.so和libssl.so),这两个库已经可以配合libcurl支持HTTPS了。
    2.编译ARM下的静态库
    先修改crypto/Android.mk:
    # target
    include $(CLEAR_VARS)
    include $(LOCAL_PATH)/../android-config.mk
    LOCAL_SRC_FILES += $(local_src_files)
    LOCAL_CFLAGS += $(local_c_flags)
    LOCAL_C_INCLUDES += $(local_c_includes)
    LOCAL_LDLIBS += -lz
    ifeq ($(TARGET_ARCH),arm)
    LOCAL_SRC_FILES += $(arm_src_files)
    LOCAL_CFLAGS += $(arm_cflags)
    else
    LOCAL_SRC_FILES += $(non_arm_src_files)
    endif
    ifeq ($(TARGET_SIMULATOR),true)
    # Make valgrind happy.
    LOCAL_CFLAGS += -DPURIFY
    LOCAL_LDLIBS += -ldl
    endif
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE:= libcrypto
    include $(BUILD_STATIC_LIBRARY)
    就是把最后的BUILD_SHARED_LIBRARY改成BUILD_STATIC_LIBRARY;后面其他MODULE都删掉.

    再修改ssl/Android.mk:
    include $(CLEAR_VARS)
    include $(LOCAL_PATH)/../android-config.mk
    LOCAL_SRC_FILES += $(local_src_files)
    LOCAL_C_INCLUDES += $(local_c_includes)
    LOCAL_STATIC_LIBRARIES += libcrypto
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE:= libssl
    include $(BUILD_STATIC_LIBRARY)
    就是把SHARED都缓存STATIC,后面的其他MODULE也都删掉

    3.编译X86版本的静态库
    修改jni/Application.mk:
    NDK_TOOLCHAIN_VERSION=4.6
    APP_PROJECT_PATH := $(shell pwd)
    APP_ABI := x86
    TARGET_ARCH := x86 
    APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk
    就是加上ABI和ARCH限制,然后该一下工具连VERSION,因为默认NDKr5b好像不支持x86,所以要换一个高版本的NDK

    http://www.cnblogs.com/guoxiaoqian/p/4199576.html

  • 相关阅读:
    [转]nginx+fastcgi+c/c++搭建高性能Web框架
    [转]向facebook学习,通过协程实现mysql查询的异步化
    [转]ReactPHP── PHP版的Node.js
    [转]nodejs npm常用命令
    [LINK]php的三种CLI常量:STDIN,STDOUT,STDERR
    苹果iPhone如何区分港版、国行、水货
    16进制字符串转36进制字符串
    设置apache https服务
    [转]Class 'ThinkLog' not found
    PHP PSR规范
  • 原文地址:https://www.cnblogs.com/findumars/p/7492573.html
Copyright © 2020-2023  润新知