首页 > 编程知识 正文

so共享库,.so是什么文件

时间:2023-05-03 06:31:11 阅读:48475 作者:2001

库文件:

编译程序通常需要预处理、编译、汇编和链接几个步骤。 我们的APP应用程序中有一些公共代码需要重复使用,并将这些代码编译到库文件中。 库文件中的函数可以通过连接程序连接到APP应用程序。 这消除了每次开发程序时编译这些公共函数的需要。

有两种类型的linux库:静态库和共享库(动态库)。

静态库:是几个目标文件的集合,以. a结尾。 在链接步骤中,连接器从库文件中检索所需的代码,并将其复制到生成的可执行文件中。

优点:可执行文件包含库代码的完整副本。 即使正在使用的库被升级或意外删除,生成的此可执行文件也仍然可用。

缺点:

多次使用后有多个冗馀副本。

生成的可执行文件大,占用内存多。

共享库:共享库以. so结尾。 编译时,很容易指定要使用的库函数。 然后,在程序启动执行时,动态加载必要的模块。 动态库是共享库的另一个变体。 动态库也在程序运行时加载,但与共享库不同,使用的库函数仅在程序中的语句需要使用该函数时加载,而不是在程序开始运行时加载。

好处:

系统只需加载一次共享库,不同的程序即可获得内存中同一共享库的副本,大大节约了内存。

程序中不包含库函数的内容,只是包含对库函数的引用,所以代码规模较小。

如果代码维护大大简化,修复了一些错误或添加了一些特性,用户只需获得并安装更新的库。

缺点:如果没有安装升级库文件后可能发生错误的适当库,则某些APP应用程序不可用(找不到库文件)。

通过比较几个库文件,可以发现共享库具有一些优点,而so文件是一种共享库。 ELF格式的可执行文件使共享库更容易实现。

so文件的优势

共享对象(so )文件是一个共享库,用于动态连接,并使用c或c编译。 正确使用可以节约系统资源,缩短运行时间,并简化代码升级。

创建so文件生成so文件主要从头文件和几个源文件经过GCC编译转换为一个共享库. so文件。 其中,我们的公共代码以. c文件的形式写在源文件中。 eclipse (安装了ndk ) )可以自动生成so文件,其原理也由GCC编译生成。 也就是说,eclipse中也需要安装mingw (由gnubinaryutilities、GCC、GDB构成)。

生成so文件后,将其复制到项目的libsarmeabi目录中。 eclipse生成的so文件直接位于此目录中。 android项目允许您创建新的java类。 该类的package和class名称必须与. so文件中的函数签名提示相匹配。 将native方法的声明添加到此类中,并使用loadLibrary加载so文件。 现在,可以在其他地方使用此wrapper调用so库中的函数。

so文件的配置文件共享库可用于同一系统中的多个APP应用程序。 共享库的性能影响使用此共享库的APP应用程序,并影响整个系统。 向代码中添加so文件主要具有以下优点:

so文件调用linux层的代码,程序运行时在下级运行。 这减少了java虚拟机的负载,并减少了执行APP应用程序的时间。

so文件可以以可执行代码的二进制形式,由操作系统加载到内存中执行。 在事件响应时,加快响应处理。

将代码打包到so文件中,可以调用安卓APP,减少了APP代码的体积,同时也实现了代码的模块化。

采用SO文件的工作原理,在升级时,只需根据需要修改SO文件或应用部分代码,即可简化升级。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。