使用动态库是有两种情况:编译时和运行时
1. 编译时——链接动态库
以net-snmp库为例,编译时用到-lnetsnmp
编译器默认搜索的路径是:/lib和/usr/lib
如果用户自己指定路径,则用-L/usr/local/net-snmp/lib
2. 运行时——加载动态库
有3中方法指定动态库路径:
(1) 设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔),系统加载工具ld.so/ld-linux.so将顺序搜索变量指定的目录。例如#$LD_LIBRARY_PATH=/usr/local/net-snmp/lib
(2) 以root身份把库路径加入/etc/ld.so.conf或在/etc/ld.so.conf.d中创建特定的.conf文件,然后运行ldconfig更新/etc/ld.so.cache。例如:在/etc/ld.so.conf.d下创建文件mysql.conf写入/usr/local/net-snmp/lib
或者直接
#echo /usr/local/net-snmp/lib >> ld.so.conf
#ldconfig
(3) 把需要的库copy到/usr/lib或/lib,但这不是建议的方法,特别是尽量避免copy发到/lib。但这种方法可以在编译时免去-L选项。