linux库及静态库及动态库的创建

来源:互联网 发布:swf工具 for mac 编辑:程序博客网 时间:2024/05/19 22:05

库:库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。它们通常由一组相互关联的函数组成以执行某项常见任务,比如屏幕处理函数库和数据库访问例程。库分为静态和动态库两种,这里先介绍一下静态库的建立。
Linux的库一般在/lib或/usr/lib目录下。lib是库(Library)的英文缩写,它主要存放系统的链接库文件,没有该目录则系统就无法正常运行。/lib目录中存储着程序运行时使用的共享库。通过共享库,许多程序可以重复使用相同的代码,并且这些库可以存储在一个公共的位置上,因此能减小运行程序的大小。这个目录包含程序在链接时使用的各种库。
.a代表传统的静态函数库这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会称为它的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。
静态库的建立简单的分为三步:
①将所有的源文件先编译成.o文件
②ar crv libxx.a xxx.o xxx.o
③使用库:gcc -o main main.c -L库的路径 -l库的名字
先把源文件编译成.o文件
先把源文件编译成.o文件
建立库文件
建立库文件
-L后面的.为当前地址,生成可执行文件main
-L后面的.为当前地址,生成可执行文件main
切换管理员模式
切换管理员模式
将建立的库文件放入/lib中
将建立的库文件放入/lib中
确认放入
确认放入
这里写图片描述
库文件默认/bin下,因此在生成main时,只需给出库文件名
库文件默认/bin下,因此在生成main时,只需给出库文件名

.so代表共享函数库
这类库的名字一般是libxxx.so,动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。而且如果多个应用程序都要使用同一函数库,动态库就非常适合,可以减少应用程序的体积。
动态库建立的简单步骤:
①编写源文件。
②将一个或几个源文件编译链接,生成共享库。
③通过 -L -lxxx 的gcc选项链接生成的libxxx.so。
④把libxxx.so放入链接库的标准路径,才能运行链接了libxxx.so的程序。
先生成一个libxxx.so文件
这里写图片描述再生成一个可执行文件
这里写图片描述
若直接运行的话,或不能链接到libxxx.so文件
这里写图片描述
通过管理员身份,把libxxx.so放入到默认目录/usr/lib/目录下,即可链接。
这里写图片描述

阅读全文
2 0
原创粉丝点击