动态库(编译时和运行时)

    技术2022-05-19  27

    使用动态库是有两种情况:编译时和运行时

     

    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选项。


    最新回复(0)