动态链接库入门浅析-库搜索顺序

一、Windows

详见 https://learn.microsoft.com/zh-cn/windows/win32/dlls/dynamic-link-library-search-order
在Windows 下,如果没有做任何操作的话。
XP 之顺序为:

  1. 包含可执行文件的目录;
  2. Windows 的系统目录,该目录可通过GetSystemDirectory 得到;即 System32;
  3. 16位的系统目录,即Windows 目录的System 子目录;
  4. Windows 目录。 使用 GetWindowsDirectory 函数获取此目录的路径;
  5. 进程的当前目录;
  6. PATH 环境变量中列出的目录。

XP 之顺序为:

  1. 包含可执行文件的目录;
  2. 进程的当前目录;
  3. Windows 的系统目录,该目录可通过GetSystemDirectory 得到;即 System32;
  4. 16位的系统目录,即Windows 目录的System 子目录;
  5. Windows 目录。 使用 GetWindowsDirectory 函数获取此目录的路径;
  6. PATH 环境变量中列出的目录。

XP 以后的搜索顺序主要目的是为了安全,让用户尽量控制住只使用自己的库和系统的库。默认情况下启用的安全 DLL 搜索模式, 若要禁用安全 DLL 搜索模式,需注册表中 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode 创建注册表值并将其设置为 0。
也可以通过调用 SetDllDirectory 函数,取消安全DLL 搜索模式。

当然,如果需要增加自己其它路径,则可以通过函数(AddDllDirectory)执行。

二、Linux

linux 程序运行时,.so 搜索路径如下:

  1. gcc 编译时指定的运行时库路径 -Wl,-rpath;
  2. 环境变量 LD_LIBRARY_PATH;
  3. ldconfig 缓存 /etc/ld.so.cache;
  4. 系统默认库位置 /lib /usr/lib
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值