当前位置:   article > 正文

【编译、链接、装载二】/lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

【编译、链接、装载二】/lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

【编译和链接二】bash: ./test.out: /lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

  • bash: ./test.out: /lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

一、问题起因

  • 新建项目
#include<stdio.h>
int main()
{
   printf("hello world\n");
}
  • 1
  • 2
  • 3
  • 4
  • 5

bash: ./test.out: /lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

在这里插入图片描述

二、ldd查看

  • 查看目录/lib目录,
    /lib目录下确实是没有ld64.so.1

在这里插入图片描述

发现是需要/lib/ld64.so.1这个库的,而上面查看的out的对应库为/lib64/ld-linux-x86-64.so.2,这其实就是两个文件要加载的解释器,两个解释器是同一个库文件,但不知为何手动链接生成的out1并非直接访问该库,而是想要使用/lib/ld64.so.1软链接。

三、解决方案一:使用gcc链接

gcc链接

gcc hello.o -o hello

正常

  • 分析
    可能是ld链接,需要手动制定一些库,而gcc不需要。具体原因未知。

四、查找其他解决方案

查找到的解决方案如下三篇文章
1、关于在64位Linux系统下运行32位程序时报:/lib/ld-linux.so.2:bad ELF interpreter:没有那个文件或目录。。。的问题解决

2、bad ELF interpreter: No such file or directory
3、关于ldd中存在的c ++:ld64.so,在运行时丢失
4、解决linux安装软件:/lib/ld-linux.so.2: bad ELF interpreter问题

尝试安装命令如下,仍然没能把问题解决

yum install glibc.i686
yum install libstdc++.so.6
yum install ld-linux.so.2

所以,继续寻找其他解决方案。

五、解决方案二:软链接

解决方法:
/lib64/ld-linux-x86-64.so.2这个文件建立一个软链接/lib/ld64.so.1

sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld64.so.1
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/492575
推荐阅读
相关标签
  

闽ICP备14008679号