手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

LINUX动态链接库高级应用

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
(1)拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库建立个连接(硬连接或符号连接均可,常用符号连接).这里说的系统共享目录,指的是LINUX动态链接库存放的目录,他包含/lib,/usr/lib连同/etc/ld.so.conf文档内所列的一系列目录.
# cp libmy.so /lib
# ldconfig
#
或:
# ln -s `pwd`/libmy.so /lib
# ldconfig
#
(2)将动态链接库所在目录名追加到动态链接库配置文档/etc/ld.so.conf中.
# pwd >> /etc/ld.so.conf
# ldconfig
#
(3)利用动态链接库管理命令ldconfig,强制其搜索指定目录,并更新缓存文档,便于动态装入.
# ldconfig `pwd`
#
需要说明的是,这种操作方法虽然有效,但效果是暂时的,供程式测试还能够,一旦再度运行ldconfig,则缓存文档内容可能改变,所需的动态链接库可能不被系统共享了.和之相比较,前两种方法是可靠的方法,值得业已定型的动态链接库共享时采用.前两种方法更有一个特点,即最后一条命令都是ldconfig,也即均需要更新一下缓存文档,以确保动态链接库的共享生效.
四、含有动态函数的程式的编译
4.1 防止编译因未指定动态链接库而出错
当一个程式使用动态函数时,编译该程式时就必须指定含所用动态函数的动态链接库,否则编译将会出错退出.如本文示例程式ady.c的编译(未明确引用动态链接库libmy.so):
# cc -o ady ady.c
/tmp/ccL4FsJp.o: In function `main':
/tmp/ccL4FsJp.o(.text 0x43): undefined reference to `gettime'
collect2: ld returned 1 exit status
#
注: 因为ady.c所含的动态函数getdate,gettime不在系统函数库中,所以连接时出错.
4.2 编译时引用动态链接库的几种方式
(1)当所用的动态链接库在系统目录(/lib,/usr/lib)下时,可用编译选项-l来引用.即:
# cc -lmy -o ady ady.c
#

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

注:编译时用-l选项引用动态链接库时,库名须使用其缩写形式.本例的my,表示引用libmy.so库.若引用光标库libncurses.so,须用-lncurses.注意,-l选项和参数之间不能有空格,否则会出错.
Google