运行C程序时出现libc.so.6加载错误(Error 24)求助
解决libc.so.6无法加载(Error 24)的问题
Error 24对应EMFILE,本质是系统或进程打开的文件描述符数量达到上限,导致sh进程无法打开libc.so.6共享库。以下是针对性的排查与解决步骤:
临时调高进程文件描述符上限
执行命令查看当前上限:ulimit -n若数值较低(如默认1024),临时调整:
ulimit -n 4096该调整仅对当前会话有效,永久生效需编辑
/etc/security/limits.conf,添加:* soft nofile 4096 * hard nofile 8192保存后重新登录或重启系统。
调整系统全局文件描述符上限
查看系统级上限:cat /proc/sys/fs/file-max临时调高:
echo 100000 > /proc/sys/fs/file-max永久生效需编辑
/etc/sysctl.conf,添加:fs.file-max = 100000执行
sysctl -p使配置立即生效。排查占用大量文件描述符的进程
即便ps未找到目标C程序,可能有其他进程占用过多资源,执行以下命令排查:# 查看系统总打开文件数 lsof | wc -l # 按进程ID排序,查看占用最高的进程 lsof | awk '{print $2}' | sort | uniq -c | sort -nr找到异常进程后,根据实际情况终止或优化。
验证并修复libc库完整性
确认sh依赖的libc路径正常:ldd /bin/sh若输出中
libc.so.6存在损坏或路径异常,重新安装glibc:apt-get install --reinstall libc6
内容的提问来源于stack exchange,提问作者vrooom
相关产品推荐
相关产品推荐

