美文网首页Android NDK
Android NDK秘籍--浅析静态库和动态库

Android NDK秘籍--浅析静态库和动态库

作者: OceanII | 来源:发表于2019-04-07 17:47 被阅读14次

    此篇文章介绍在Android NDK开发中静态库和动态库的知识,主要是编译C/C++库和调用C/C++库的方法和场景。

    本文第三部分是为了接下来的几篇文章做铺垫,也是本系列中最重要的几篇。

    本文目录:

    1.静态库介绍

    2.动态库介绍

    3.总结静态库和动态库的几种编译和调用场景

    1.静态库介绍

    静态库:

    1.全名是静态链接库(Static Library),后缀是.a,例如libcjson.a

    2.调用静态库的程序在编译时会将静态库全部编译到目标代码中,所以程序运行环境中不再需要静态库,并且静态库文件体积较大

    3.调用静态库时,如果对静态库中的函数内容进行改变,不仅需要重新编译静态库,还需要对调用静态库的程序重新编译,将静态库编译到目标代码中。

    2.动态库介绍

    动态库:

    1.全名是动态链接库(Shared Library),后缀是.so,例如libcjson.so

    2.调用动态库的程序在编译时不能将动态库编译到目标代码中,程序执行到相关函数时才会链接该动态库对应的函数,所以程序运行环境中必须提供动态库,并且动态库文件体积较小

    3.调用动态库时,如果对动态库中的函数内容进行改变,只需要重新编译动态库,不需要对调用动态库的程序重新编译,即不需要干预目标代码,直接用新的动态库替换掉旧的动态库即可

    3.总结静态库和动态库的几种编译和调用场景

    在经过多次NDK测试与验证后,总结了静态库和动态库的几种编译和使用场景,总体可以分为3种情况:

    1.将C/C++的源码直接编译成静态库,只能提供给底层调用。

    注:比较适用于将第三方开源库编译成静态库,给自己的底层调用。

    2.将C/C++的源码直接编译成动态库,提供给底层调用。

    注:比较适用于将自己写的源码编译成动态库,给自己或其他人的底层调用。

    3.将C/C++的源码进行JNI层封装后,编译成动态库,提供给上层调用。

    注:比较适用于将自己写的源码进行JNI封装后,给自己或其他人的上层调用。

    接下来的文章会详细讲解静态库和动态库的编译方法和调用场景。

    相关文章

      网友评论

        本文标题:Android NDK秘籍--浅析静态库和动态库

        本文链接:https://www.haomeiwen.com/subject/ongsiqtx.html