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

news/2024/9/28 13:15:05 标签: linux, bash, 运维, 没有那个文件或目录, ld64.so.1

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

  • 一、问题起因
  • 二、ldd查看
  • 三、解决方案一:使用gcc链接
  • 四、查找其他解决方案
  • 五、解决方案二:软链接

一、问题起因

  • 新建项目
#include<stdio.h>
int main()
{
   printf("hello world\n");
}
  • ld链接
    在【编译原理一】预处理、编译、汇编、链接文章中,ld链接完成后,执行hello.out时,报错如下

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

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

五、解决方案二:软链接

  • 参考:linux的c语言编译链接过程(gcc,ld),出现没有这个文件或目录及段错误的解决

解决方法:
/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
在这里插入图片描述


http://www.niftyadmin.cn/n/378158.html

相关文章

Canvas画布基本功能及实现网页签名功能

canvas 简介 <canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画&#xff0c;甚至可以进行实时视频处理和渲染。和所有 DOM 元素一样&#xff0c;拥有自己…

工作积极主动分享,善于业务沟通

工作积极主动分享&#xff0c;善于业务沟通 目录概述需求&#xff1a; 设计思路实现思路分析1.工作积极主动承担责任2.善于沟通3.一起常常lauch 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;…

网络地址的相关计算

&#xff08;一&#xff09;VLSM&#xff08;可变长子网&#xff09;&#xff1a; 某公司网络的地址是 192.168.192.0/20&#xff0c;要把该网络分成 32 个子网&#xff0c;则对应的子网 掩码应该是(54)&#xff0c;每个子网可分配的主机地址数是(55)。 (54) A.255.255.252.0…

01_java基础语法

1. Java概述 1.1 Java语言背景介绍&#xff08;了解&#xff09; 语言&#xff1a;人与人交流沟通的表达方式 计算机语言&#xff1a;人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司&#xff08;Stanford University Network&#xff09;在1995年推出的…

chatgpt赋能python:Python中的“5“+“5“:了解运算符重载和字符串拼接

Python中的 “5”“5”: 了解运算符重载和字符串拼接 Python中的运算符重载允许我们自定义类型的操作符行为。当我们使用加号运算符将两个对象相加时&#xff0c;Python会动态地确定该使用哪种类型的操作符行为。在使用字符串时&#xff0c;加号可以用于字符串的连接&#xff…

Asp.netERP客户关系系统设计(源代码+论文)

ERP(Enterprise Resources Planning,企业资源计划),是指建立在信息技术应用基础上,结合系统化的管理思想,为企业决策层及员工提供决策手段的管理平台。 车间管理子系统要求根据物料需求计划,能力需求计划以及生产工艺流程制定车间作业计划,车间管理人员按车间作业计划…

Metasploit超详细安装及使用教程(图文版)

通过本篇文章&#xff0c;我们将会学习以下内容&#xff1a; 1、在Windows上安装Metasploit 2、在Linux和MacOS上安装Metasploit 3、在Kali Linux中使用 Metasploit 4、升级Kali Linux 5、使用虚拟化软件构建渗透测试实验环境 6、配置SSH连接 7、使用SSH连接Kali 8、配…

【C++】函数高级 - 默认参数,占位参数,函数重载基本语法,函数重载注意事项

No.Contents1【C】基础知识 - HelloWorld&#xff0c;注释&#xff0c;变量&#xff0c;常量&#xff0c;关键字&#xff0c;标识符2【C】数据类型 - 整型&#xff0c;sizeof&#xff0c;实型&#xff0c;字符型&#xff0c;转义字符&#xff0c;字符串类型&#xff0c;布尔类型…