Linux-奇怪的No such file or directory

文件明明存在,执行为啥会报No such file or directory ?

$ ls

$ https openssl sftp

$ ./https

-bash: ./https: No such file or directory

$ ldd https

linux-vdso.so.1 (0x00007ffc9b7f7000)

libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f8b3c8a0000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8b3c6dc000)

libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f8b3c64c000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8b3c646000) # 不存在

/lib64/ld-linux-x86-64.so.2 (0x00007f8b3c90a000)

  • 输出格式:依赖库名称 => 实际路径(内存地址)
  • linux-vdso.so.1:内核提供的虚拟库,用于加速系统调用,无物理文件路径。

发现部分依赖库不存在导致。

常见错误:

ldd: ./program: No such file or directory → 可能是缺少解释器或程序本身不存在

ldd: exited with unknown exit code → 程序可能在运行期间崩溃

Linux ldd 命令详解

ldd(List Dynamic Dependencies,列出动态依赖)是 Linux 系统中用于查看可执行文件或共享库(.so)所依赖的动态链接库 的核心工具,本质是一个 shell 脚本(而非二进制程序),通过调用动态链接器(如 ld-linux.so)来解析目标文件的依赖关系。

基本语法

ldd 选项 目标文件(可执行文件/共享库)

目标文件:必须是 ELF 格式(Linux 主流二进制格式)

三、常用选项

选项 功能说明
无选项(默认) 列出依赖库的 "名称→实际路径→链接器" 关系,简洁明了
-v / --verbose 详细输出:包含依赖库的版本信息、符号版本要求、链接器路径等
-u / --unused 列出 "未被目标文件实际使用" 的依赖库(可能是编译时冗余依赖)
-r / --function-relocs 检查未定义的函数引用(若有缺失,会提示 undefined symbol,排查依赖缺失)
-d / --data-relocs 检查未定义的数据引用(类似 -r,但仅关注数据符号)
--help 查看帮助信息
--version 查看 ldd 版本(实际是动态链接器的版本)

输出事例:

linux-vdso.so.1 (0x00007ffc9b7f7000) # 虚拟动态共享对象(内核提供,无实际路径) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f8b3c8a0000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8b3c6dc000) # C标准库 libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f8b3c64c000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8b3c646000) /lib64/ld-linux-x86-64.so.2 (0x00007f8b3c90a000) # 动态链接器(程序启动时调用)

尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬尴尬😅尴尬

/lib64/ld-linux-x86-64.so.2

构造由于动态链接文件缺失,执行二进制文件报No such file or directory的问题,将/lib64/ld-linux-x86-64.so.2动态链接器给移走,结果嘎嘎了!!!

系统所有命令都执行不了,mv、cp等, 文件移不回去了。

进阶技巧

1. 结合 readelf 查看更详细的依赖信息

复制代码
readelf -d /path/to/program | grep NEEDED
相关推荐
Decay__5 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子7 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF8 小时前
Linux
linux·服务器·网络
万联WANFLOW8 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery10 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
乌恩大侠10 小时前
从 AI-RAN 到 AI Agent:基于 NVIDIA Nemotron 构建 5G/6G 智能网络故障诊断系统
服务器·人工智能·5g·o-ru·ai-ran·电信大模型
Decay__11 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff12 小时前
压缩命令笔记
linux
江华森12 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼12 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测