如何制作静态库和动态库
创建一个静态库通常使用 ar 程序把一些目标文件(.o)组合在一起,
5ZT8xyj4H0l:[R成为一个单独的库,然后运行 ranlib,以给库加入一些索引信息。
Zi%b*yn
O_Yt hA8A1lwww.linuxeden.com,J~8kV
O4Pj*p3K
编译与命名动态链接库
+i/s,p ]3v
O}$[1K1L|l/u"ywww.linuxeden.com
$wg5]2^,IK$h-R!M;e为了让GCC编译器生成动态链接库,编译时须加选项-shared.(这点须牢记)
cqX]s6ZENwww.linuxeden.com{+Y%p} ~5J$Z%W
LINUX系统中,为了让动态链接库能被系统中其它程序共享,其名字应符合“lib*.so*”这种格式.如果某个动态链接库不符合此格式,则LINUX的动态链接库自动装入程序(ld.so)将搜索不到此链接库,其它程序也无法共享之. O%FJ6CF
?YU4c4G4q格式中,第一个*通常表示为简写的库名,第二个*通常表示为该库的版本号.如:在我的系统中,基本C动态链接库的名字为libc.so.6,线程pthread动态链接库的名字为libpthread.so.0等等.本文例子所生成的动态链接库的名字为libmy.so,虽没有版本号,但也符合所要求的格式. +[i{m1A9C^?2Q j
_!R
|Z"a
为了让动态链接库为系统所使用,需要维护动态链接库的配置文件--/etc/ld.so.conf.此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔.
+Z*U'y_b.{
Oewww.linuxeden.comv!fT6h O}7xzc`
使用ldconfig在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
L3{$f4Z|a;^2S.Ky$@
oVk`
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.
|