之前写JNI的代码时,对静态库和动态库是比较清楚的,但是现在两年没写JNI相关的代码,竟然把这两个库都搞得不清楚,这里就把两个库的定义整理下,后面激励自己多多复习!
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。
1. 静态函数库
这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。
2. 动态函数库
这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。
分享到:
相关推荐
本教程将深入探讨如何在Windows XP环境下,利用Qt 4和MinGW编译器创建和使用静态库与动态库。 首先,让我们理解静态库和动态库的基本概念。静态库(.lib文件)是将库函数编译到目标代码中,形成一个完整的可执行...
这个项目是笔者用来学习 静态库和动态库 的时候所建,基于 newmat 矩阵库,详细的操作可以参考博文[『C++ 静态库与动态库的生成和使用:基于 VS Studio 生成 newmat 矩阵库的静态库与动态库』]...
本资料主要探讨的是Linux中的静态库与动态库的链接装载过程,以及如何理解和使用它们。 静态库,通常以`.a`文件格式存在,它将所有依赖的代码直接嵌入到目标程序中。当编译程序时,链接器会将静态库中的函数和数据...
### gcc静态库与动态库生成 在嵌入式开发领域,了解如何使用gcc工具链来构建和管理静态库(`.a`文件)与动态库(`.so`文件)是非常重要的。本文将详细介绍如何通过gcc创建这两种类型的库,并讨论它们各自的用途、优...
### Linux静态库与动态库详解 #### 一、引言 在Linux环境下,库是一种重要的软件组件,用于封装一组相关的函数或数据结构,以便于在不同的应用程序之间共享代码。库通常分为两大类:静态库(static libraries)和...
在“已编译好的libpng静态库与动态库.zip”这个压缩包中,包含了预编译的libpng库文件。静态库(.a或.lib)和动态库(.so或.dll)是两种不同的库类型。静态库在编译时会被直接链接到目标代码中,形成一个独立的可...
本文详细介绍了linux下的静态库与动态库的区别,适合于那些对静态库和动态库分不清楚的同学,以及那些想要自己研究如何生成动态库的同学
### 使用GCC建立并调用静态库与动态库 在软件开发过程中,经常需要将一些功能模块封装成库供多个程序共享使用。库可以是静态库或动态库两种形式。本篇将详细介绍如何利用GCC(GNU Compiler Collection)编译器创建...
Linux 静态库与动态库的区别、Gdb 调试段错误、自动生成 Makefile Linux 下的静态库与动态库的区别: 1. 库的概念:库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 2. 库的种类:Linux下的库有两...
在Linux操作系统中,库文件是...总之,理解Linux下的静态库和动态库以及如何生成和使用它们对于进行系统级编程和软件开发至关重要。选择静态库或动态库取决于需求,如资源限制、程序部署的便捷性以及库更新的需求等。
这个压缩包包含的是 FFmpeg 7.0 版本针对 Android 平台的静态库和动态库,这对于在 Android 应用中实现音视频的编码、解码、转码、流媒体等功能至关重要。 1. **FFmpeg 概述** FFmpeg 是一套跨平台的音视频处理...
Make自动化编译工具-编译静态库与动态库 MD Document:2/28/2016 2:23:09 AM by Jiimbowhy CSDN PuBLiSh:http://blog.csdn.net/winsenjiansbomber/article/details/50758180 在软件开发过程中,编译程序有时会成为一...
Linux静态库与动态库使用方法教程
静态库与动态库的建立与使用 Lorem ipsum dolor sit amet, consectetur adipisicing elit. 详细步骤和方法内配截图
在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成...
### Linux静态库与动态库详解 #### 基本概念 **库的定义与作用**:库,实质上是预编译的代码集合,旨在提供重复使用的功能或服务,简化软件开发过程。无论是在Windows还是Linux平台,库的存在极大地提高了编程效率...
3. **静态库与动态库** - **静态库**:静态库(.a或.lib文件)在编译时会被直接链接到目标代码中,生成的可执行文件不依赖外部库。这意味着程序体积可能较大,但运行时无需担心依赖库的问题。 - **动态库**:动态...
库从本质上来说是一种代码重用的方式,即预先编译为可执行代码的二进制格式,可以被...比如我们熟悉的c运行库,里面就实现了很多基本的函数,我们无需再自己写一遍,直接调用接口使用即可,库分静态库和动态库两种。
本篇将深入探讨如何使用CMakeLists来生成静态库、动态库,并创建测试程序进行验证。 首先,我们要理解静态库和动态库的区别。静态库(.a 或 .lib)是在编译时将库代码直接嵌入到目标程序中,形成一个完整的可执行...