我在系统中的三个不同路径中具有相同的共享库。假设路径是PATH1,PATH2 & PATH3。链接器或加载器如何处理共享库的断开软链接?
共享库的名字是libmylib.so
现在,PATH1如果我更换一个破碎的软链接的libmylib.so,它为图书馆进入和搜查的PATH2。
但是,PATH1如果我用其名称为libmylib.so一些其他的文本文件(或一些无关的文件)替换libmylib.so,然后应用程序执行失败,指出“没有一个ELF头”
我有些困惑的行为?为什么它会搜索其他路径以避免软连接断开,并在文件不正确的情况下失败。我期待它也搜索其他路径的不正确的文件。
打开一个悬空的符号链接返回ENOENT,同样的错误作为一个不存在的文件,因此对连接器的悬空符号链接看起来是一样的不存在的文件,它将继续看。一旦找到文件,它会停止搜索。 – bdk 2011-03-15 14:46:03