Linux应用开发--静态函数库和动态函数库
来源:互联网 发布:rmvb转mp4 mac版 编辑:程序博客网 时间:2024/05/22 02:20
什么叫库?就是一些函数经过一定的操作生成的可执行的二进制文件,能够被外部调用使用封装的函数。
Linux应用程序所使用的主要函数库均存放于/lib和/usr/lib目录下,其中以*.so方式命名的是动态函数库,以*.a命令的是静态函数库,linux下进行链接时默认使用动态函数库,如果想要使用静态函数库时使用-static编译选项即可,比如:gcc -static hello.c -o hello
一、静态函数库和动态函数库
1、在使用静态函数库时,我们需要的库都将会编译到程序当中,程序运行时就不再需要链接外部的函数库了。在应用程序中,静态函数库有多份函数库的拷贝,意思就是每使用一个静态函数库里的函数调用都会生成一个函数库的副本,这样就导致应用程序比较大,比较浪费空间。
2、动态函数库,又叫共享库,它使得可执行文件中不再需要包含公用的函数库,而只需在所有进程都可以引用的存储区中保存这种函数库的一个副本并没有编译进入程序本身,所以和静态函数库不一样,程序中只有一份函数库的拷贝,减少了程序空间,尤其是在一些通用的功能使用中,比如读写文件,但是增加了运行时间,增加的时间体现在第一次使用函数库时的开销。
二、函数库的制作
1、制作静态函数库
静态函数库的制作分为三步:
gcc -c Libname.c -o Libname.o
ar cqs libLibname.a Libname.o
将制作好的libLibname.a复制到/usr/lib中
2、制作动态链接库
gcc -c Libname.c -o Libname.o
gcc -shared -fPIC Libname.o -o Libname.so
将制作好的函数库复制到/usr/lib中
特别说明:-fPIC使输出的对象模块是按照可重定位地址方式生成的。
-shared指明产生动态链接库
3、如何使用:
gcc编译器在链接时默认只会链接C函数库,要想使用其他函数库时需要加入编译选项-l显示指明某个库需要链接
如:gcc thread.c -o thread -lpthread,线程函数需要链接线程库pthread
- Linux应用开发--静态函数库和动态函数库
- 静态函数库和动态函数库
- 静态函数库 和 动态函数库
- linux应用编程笔记(4)静态函数库和动态函数库使用
- linux下的静态函数库和动态函数库
- linux下的静态函数库和动态函数库
- linux下的静态函数库和动态函数库
- linux下的静态函数库和动态函数库
- 静态函数库和动态函数库的制作
- 静态和动态函数库设计
- 静态函数库与动态函数库区别、应用--ldconfig、ldd
- linux下的静态函数库和动态函数库创建和使用
- Linux:静态函数库(.a)与动态函数库(.so)
- Unix/Linux下静态函数库和动态函数库的制作及使用
- Linux中有两类函数库 分别是静态库和动态库
- Linux静态函数库的使用和制作/动态…
- 2-6 静态函数库和动态函数库的建立
- 静态函数库与动态函数库的设计
- MAC上的Phantomjs的安装和配置
- 设计模式之三:观察者模式
- java.lang.NoSuchFieldError: TRACE
- Python机器学习库sklearn里利用感知机进行三分类(多分类)的原理
- Ubuntu 下提示/boot空间不足解决办法
- Linux应用开发--静态函数库和动态函数库
- MODBUS协议整理:功能码简述 报文分析
- python多线程学习
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础0014--flink分布式部署009
- 【C#】数据类型
- SIFT特征浅析
- NSIS杀死进程(包括多个)
- 输入完网址按下回车,到看到网页这个过程中发生了什么
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。