libm.so.6:no such file or directory

来源:互联网 发布:js颜色代码 编辑:程序博客网 时间:2024/06/04 17:42

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

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

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

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

负责查找库的程序是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


原创粉丝点击