windows和linux的动态库环境变量

 Windows程序在start时,同Linux一样,要将动态库load进来,Linux会查找LD_LIBRARY_PATH, Windows会查找环境变量PATH,以下是各平台的查找路径:
 
   Linux: LD_LIBRARY_PATH
   Solaris:LD_LIBRARY_PATH
   HP: SHLID_PATH
   AIX: LIBPATH
   Windows: PATH
  这些只是各平台会查找的其中一个路径,如Solaris就还会查找RPATH。
  这不是这里要说的重点,在Linux及Unix平台上,程序在start时,如果查找到一个名字匹配,但格式不匹配的动态库,将报错,并退出,如32bit程序在LD_LIBRARY_PATH里面先找到了一个64bit的动态库,将报一个类似XXX.so: wrong ELF class: ELFCLASS64的错误,然后程序退出。
  Windows平台不一样,使用Procmon工具可以看到,即使在PATH路径里面找到一个错误位数的dll,程序也会尝试将它读进来,并且从Procmon里看不到错误信息,但可以推测它load不成功,因为从Procmon里面看到程序继续查找PATH里面的其它路径,尝试去找到正常的dll,如果后面的路径有一个位数匹配的dll,程序就能load进来,成功运行起来。


  这里要注意两件事,一是Windows平台load到位数不匹配的dll,不会被迫退出;二是用Procmon工具不能直接看出load dll是否出错,只能从后面的路径推测它出错了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值