添加.so文件后,还是不能使用怎么办

添加.so文件后,还是不能使用怎么办,第1张

【问题描述】:文件删除时,无法读取源文件或磁盘【原因分析】:1. 某些文件夹或者目录导致无法删除2. 磁盘错误【简易步骤】:【我的电脑】—【属性】—【工具】—【开始检查】—然后勾选【自动修复文件系统错误】和【扫描并试图恢复坏扇区】—【开始】—【360安全卫士】—【功能大全】—【文件粉碎机】【解决方案:】:方案一:Ctrl+alt+del注销或重启电脑,再次删除;方案二:在安全模式下删除1. 进入【安全模式】删除,重启电脑同时一直按【F8】然后用上下键选择【安全模式】。(如图1,图2)图1图2方案三:如果是某些文件夹或者目录导致无法删除,可先删除该文件夹中的子目录再删除文件夹;方案四:磁盘错误,运行磁盘扫描进行修复1. 打开【我的电脑】右键单击该文件的磁盘(如C盘),点击【属性】。(如图3)图32. 【工具】—【开始检查】。(如图4)图43. 然后【】,【自动修复文件系统错误】和【扫描并试图恢复坏扇区】点击【开始】即可。(如图5)图54. 【360安全卫士】—【功能大全】—【文件粉碎机】。(如图6)图6

从下面的的命令中,我们可以列出可执行文件或者共享对象的动态从属关系,这玩意没了,你的什么ls,cd什么的命令就都费了,如果ld.so.1文件被破坏了,系统肯定无法正常启动。

/usr/bin/ldd [filename]

/* List the dynamic dependencies of executable files */

# /usr/bin/ldd /usr/bin/cat

libc.so.1 =>/usr/lib/libc.so.1

libdl.so.1 =>/usr/lib/libdl.so.1

/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1

# ldd /usr/bin/ls

libc.so.1 =>/usr/lib/libc.so.1

libdl.so.1 =>/usr/lib/libdl.so.1

/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1

# ldd /usr/bin/cp

libc.so.1 =>/usr/lib/libc.so.1

libdl.so.1 =>/usr/lib/libdl.so.1

/usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1

二、ld.so.1文件损坏或丢失解决的办法

1.如果意外的/usr/lib/ld.so.1损坏或丢失,系统没有正常启动的情况下:

执行命令都会出现错误信息:

#reboot

Reboot :can not find /usr/lib/ld.so.1

#find

Find: /usr/lib/ld.so.1

#ls

Ls: can not find can not find

这时,千万不要重启动,立即用/usr/sbin/static/mv、/usr/sbin/static/cp命令恢复 :

#/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/

经过实验,系统恢复正常!这时,你试试如下命令,就能体会到为什么了。

---------------------------------------------------------------------------

# ls /usr/sbin/static

cp* ln* mv* rcp* tar*

SUN的工程师非常聪明,为了防备了这个情况, 做了以上几个不使用动态连接库的命令

#find / -name ld.so.1 -print

/usr/lib/sparcv9/ld.so.1

/usr/lib/ld.so.1

/etc/lib/ld.so.1

blade% ls -ld /usr/lib/sparcv9/ld.so.1

-rwxr-xr-x 1 root bin 191672 Jul 28 2001 /usr/lib/sparcv9/ld.so.1

blade% ls -ld /usr/lib/ld.so.1

-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /usr/lib/ld.so.1

blade% ls -ld /etc/lib/ld.so.1

-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /etc/lib/ld.so.1

---------------------------------------------------------------------------

从上面的,我们又可以看到,这个库文件,不仅仅在/usr/lib有,在/etc/lib、/usr/lib/sparcv9/下也有,所以你就重新在本机上拷贝一份就行了。这些信息在这个连接库不正常的情况下是看不到的。

2.如果意外的/usr/lib/ld.so.1损坏或丢失,系统启动的情况下:

错误信息:

Uname:can not find /usr/lib/ld.so.1

Loadkeys: can not find /usr/lib/ld.so.1

Killed

Cfsfstype: can not find /usr/lib/ld.so.1

Expr: can not find /usr/lib/ld.so.1

Swap: can not find /usr/lib/ld.so.1

Killed

Fsck: can not find /usr/lib/ld.so.1

Killed

这时,用光盘启动到单用户下:

ok boot cdrom -s (放入启动安装光盘)

#mount /dev/dsk/c0t0d0s0 /mnt (这里指定原usr目录对应的原始设备名)

# cp /mnt/etc/lib/ld.so.1 /mnt/lib/(就是将/usr/etc下的这个文件拷贝到/usr/lib下。)

系统重新启动,一切正常!

3.如果/usr被改名了情况下,怎么办?

假设/usr改名成了/faint,系统没有启动

马上执行

#/faint/sbin/static/mv /faint /usr

假设/usr改名成了/faint,系统重新启动,这时肯定不能正常启动,同样我们启动到单用户下:

ok boot cdrom -s (放入启动安装光盘)

mount /dev/dsk/c0t0d0s0 /mnt (这里指定原usr目录对应的原始设备名)

mv /mnt/faint /mnt/usr

建议把/usr/sbin/static下的东西拷一份到/sbin下或者其它比较可信的跟/在同一个文件系统下的目录下。以备系统不测.

之后,我又进行了多次实验,各个版本系统下的/usr/lib/ld.so.1文件互相兼容。所以也可以从其他机器拷贝过来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8125618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存