libm.so.6:no such file or directory

最近几天一直在弄qemu方针integratorcp开发板,遇到了很多问题,其中一个就是这个。

出现这种错误,一般肯定是首先检查库是否存在,是否在文件搜索路径中。

我出现这个错误的情况可能有点不一样,是在系统启动过程中提示的,由于该错误,系统未启动成功,init进程被杀死,但内核已经启动完成。

查看/lib目录,发现libm.so.6文件存在,是个链接文件,指向libm-2.17.so然后就一直纳闷儿,那是什么原因导致init进程无法启动,提示找不到libm库呢/span>

负责查找库的程序是ld-linux.so.3,问题就出在该文件上。由于在init进程启动前,需要加载相应的动态库,动态库的加载和初始化任务都是由ld-linux.so.3来完成,而此时由于init进程还未启动,所以添加的环境变量全部无效,只有默认环境变量有效,即正常情况下默认库搜索路径应该为 /lib:/usr/lib。但实际上,正是由于默认库搜索路径有误,所以才导致lib目录下明明存在libm.so.6文件,ld-linux.so任然提示“No such file or directory”。

出现该问题的原因:ld-linux.so.3文件有问题,默认库搜索路径应该是上面提到的两个目录。

解决办法:重新编译glibc。找到elf/Makefile文件,定位到”gen_trusted_dirs.awk”上一行,修改为”echo ‘/lib:/usr/lib'”

问题追踪:ld-linux.so.3->_dl_map_object(elf/dl-load.c)->SYSTEM_DIRS(elf/trusted_dirs.h)->elf/Makefile

来源:Seem Jing

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年6月4日
下一篇 2013年6月4日

相关推荐