2023年怎样创建linux静态库和动态库文件精编

网友 分享 时间:

【导读预览】此篇优秀范文“2023年怎样创建linux静态库和动态库文件精编”由阿拉题库网友为您整理分享,以供您参考学习之用,希望此篇资料对您有所帮助,喜欢就复制下载支持吧!

怎样创建linux静态库和动态库文件篇1

静态库:链接时,库与编译生成的 .o 文件一起打包到可执行文件中。 linux / windows 下扩展名分别为:.a / .lib

动态库:链接时,不会打包到可执行文件中, 执行时会动态的加载动态库。 linux / windows 下扩展名分别为:.so / .dll

a、可维护性。

合入更新。合入动态库的更新,只要替换库即可。但合入静态则需要重新链接,生成新的可执行程序,全量更新。

环境依赖。若包含静态库,编译成功后不依赖环境。动态库则存在依赖关系,需要环境中存在对应的动态库。

b、大小

空间利用率。若依赖相同静态库,则存在多份拷贝。

可执行文件大小。静态库文件较大。

c、动态库可以实现进程之间的资源共享,因此也称为共享库。

静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib

代码如下:

ar -crv

xxx 是库名, 是要打包的目标文件。crv 参数,含义分别是

c: do not warn if the library had to be created

r: replace existing or new file(s) into the archive

v: be verbose

使用时,只需在代码中引入 头文件,链接时,指定静态库的搜索路径(-l选项)和静态库名(不需要lib前缀和.a后缀,-l选项)。

代码如下:

g++ -l.。/staticlibrary -lxxx

window与linux执行文件格式不同,在创建动态库的时候有一些差异。

windows 下执行文件是 pe 格式,动态库需要一个dllmain函数做出初始化的入口,通常在导出函数的声明时需要有_declspec(dllexport)关键字。

linux下 gcc 编译的`执行文件默认是 elf 格式,不需要初始化入口,亦不需要函数做特别的声明,编写比较方便。

linux 下动态库的命名格式同静态库,为 格式。

动态库的创建,使用编译器即可,不需要像静态库一样使用专门的打包工具。

若要创建动态库,源码编译时添加 -fpic 选项,链接时添加 -shared 选项。

代码如下:

g++ -fpic -shared -o

用法同静态库,

代码如下:

g++ -l.。/dynamiclibrary -lxxx

只是需要设置下搜索路径。默认搜索路径:/lib/, /usr/lib。

设置搜索路径:

编辑 /etc/,设置搜索路径

运行 ldconfig ,重建 /etc/ 文件。设置生效。

ldd 查看程序依赖的共享库(动态库)

代码如下:

gcc / g++ 参数 -i(大写 ‘i’),-l(大写‘l’),-l(小写‘l’)

1、 -i(大写 ‘i’) 头文件目录

2、-l(大写‘l’) 库目录

3、-l(小写‘l’) 库名

大写是目录,小写是库。

s("content_relate");

怎样创建linux静态库和动态库相关文章:

1.

关于在linux平台上接静态库和共享库的使方法

2.

linux系统下动态库的生成介绍

3.

jni是怎样java调用c动态库

4.

php如何创建数据库

5.

java中静态绑定和动态绑定的区别

6.

linux自动备份mysql数据库的实用方法

7.

科目二考试攻略:倒库移库技巧

8.

office的剪辑库

48 1512248
");