zoukankan      html  css  js  c++  java
  • Android之JNI:Android Studio使用Android.mk编译C/C++源码

    1.生成.h头文件,配置.c文件(可查看Android之JNI:Android Studio使用Gradle编译C/C++源码)
    2.编写Android.mk
    //Android.mk简介参考链接:http://blog.sina.com.cn/s/blog_602f8770010148ce.html
    LOCAL_PATH:= $(call my-dir) //Android.mk 文件首先必须定义LOCAL_PATH变量,以便用于在开发树中查找源文件.宏函数'my-dir'由编译系统提供,用于返回当前路径(即包含Android.mk的目录)
    include $(CLEAR_VARS) //CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH.因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的,所以有必要.
    LOCAL_MODULE := juziJni //表示编译的动态库名称.名称必须唯一,而且不包含任何空格且不要以lib开头
    LOCAL_SRC_FILES:= jni_use.c //表示源代码文件
    include $(BUILD_SHARED_LIBRARY) //表示编译生成共享库,是编译系统提供的变量,指向一个GNU Makefile脚本,负责收集自从上次调用'include $(CLEAR_VARS)'以来,定义在LOCAL_XXX变量中的所有信息,并且决定编译什么,如何正确地去做.(BUILD_STATIC_LIBRARY:编译为静态库;BUILD_SHARED_LIBRARY :编译为动态库;BUILD_EXECUTABLE:编译为Native C可执行程序)
    3.linux环境下使用ndk-build命令编译生成.so文件
    若要指定架构,可以使用如下命令:
     
    1. ndk-build APP_ABI="armeabi armeabi-v7a x86 mips"
    4.使用生成的.so文件【Android之Android Studio下使用JNIAndroid Studio下使用.so文件


    小Tips:
    1.Android.mk:2: *** missing separator.  Stop.
    LOCAL_PATH:= $(call my-dir)
    include$(CLEAR_VARS)
    LOCAL_MODULE := juziJni
    LOCAL_SRC_FILES:= jni_use.c
    include$(BUILD_SHARED_LIBRARY)
    解决办法:$符号前面必须加一个空格
    LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := juziJni
    LOCAL_SRC_FILES:= jni_use.c
    include $(BUILD_SHARED_LIBRARY)
    2./home/emily/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: fatal error: ./obj/local/armeabi/PassWorld: Input/output error
    collect2: error: ld returned 1 exit status
    解决办法:在虚拟机和window的共享文件中编译会出现这种问题,copy项目至linux目录即可。




  • 相关阅读:
    jQuery中时间戳和日期的相互转换
    jquery append 方法应用
    MySQL中实现连续日期内数据统计,缺省天数0补全
    jQuery通过ajax请求php遍历json数组到table中的代码
    sql相同表不同查询条件合并显示
    paginate()出来的数据怎样循环插入数据?
    使用paginate分页后数据处理
    ThinkPhp3.2.3 使用phpExcel导入数据
    判断时间戳是星期几
    英文加数字升序/降序
  • 原文地址:https://www.cnblogs.com/linux007/p/5782729.html
Copyright © 2011-2022 走看看