Linux环境下动态库和静态库的创建和引用

一、创建库文件:
编辑头文件(.h)和源文件(.c;.cxx)。
生成目标文件:
$gcc -c <src_fname_list> -o <fname_obj>
生成静态库文件:
$ar cr lib<fname>.lib obj_fname_list
例如:
$ar cr libmymath.a mymath1.o mymath2.o
生成动态库文件:
$gcc -shared -fPIC -o lib<fname>.so <obj_fname_list>
例如:
$gcc -shared -fPIC -o libmymath.so mymath1.o mymath2.o
//----
二、指定库文件的搜索路径:
动态库的搜索次序:gcc命令指定,环境变量LD_LIBRARY_PATH指定,
配置文件/etc/ld.so.conf内指定(/etc/ld.so.cache),默认的/usr/lib,默认的/usr/local/lib。
gcc命令指定的方法:-L <dir> -l<lib_base_name>。
环境变量LD_LIBRARY_PATH指定的方法(若指定多个目录,可用冒号间隔):
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name>
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name1>:<dir_name2>....
例如:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux2014/MyLib
配置文件/etc/ld.so.conf内指定的方法:编辑此文件,将库文件的搜索路径加到文件末尾,在终端执行ldconfig命令。
静态库的搜索次序:gcc命令指定,环境变量LIBRARY_PATH指定,
默认的/lib,默认的/usr/lib。
//---
三、引用方法:
$gcc <obj_fname_list> -o <exe_fname> -L <dir> -l<lib_base_name>
或:
$gcc -L <dir> -l<lib_base_name> <obj_fname_list> -o <exe_fname>
优先引用动态库。
//----
四、添加动态库文件到指定目录的方法:
(1)、若将.so文件加入到默认的/usr/lib,或/usr/local/lib目录下,在终端执行ldconfig命令。
(2)、若将.so文件加入到其他目录下,需将库目录写入共享库配置文件/etc/ld.so.conf内。示例如下:
#cat /etc/ld.so.conf
#echo "/home/linux2014/MyLib" >> /etc/ld.so.conf
#ldconfig
(3)、export LD_LIBRARY_PATH,是临时指定。
(4)、向/etc/ld.so.cache内添加动态库文件搜索路径的方法:
#ldcofig <dir_name>//刷新/etc/ld.so.cache
或:先写入文件/etc/ld.so.conf内,再执行ldconfig刷新:
#echo "<dir_name>" >> /etc/ld.so.conf
#ldconfig
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值