各位 V 友们紧急求助, Linux 装了一个 cs50 库,安装完后所有的指令都失灵了,提前谢谢大佬们了。

2023-10-25 11:51:19 +08:00
 Himmel

想要学习 CS50 课程,就在本地装一个环境,装好后 ls 、su 、sudo 都显示段错误,新的 ssh 也连接不上了,目前没有 root 权限,只有一个普通用户在连接中,还有一个 root 用户的 RaiDrive 在连接状态,可以修改一些文件。 有没有大佬指点一下,还能通过修改某些文件的方式救回来吗,先提前感谢了!

过程如下:

[himmel@localhost libcs50-11.0.2]$ sudo make install
cc -Wall -Wextra -Werror -pedantic -std=c11 -fPIC -shared -Wl,-soname,libcs50.so.11 -o libcs50.so.11.0.2 src/cs50.c
cc -Wall -Wextra -Werror -pedantic -std=c11 -c -o libcs50.o src/cs50.c
ar rcs libcs50.a libcs50.o
chmod 644 libcs50.a
rm -f libcs50.o
ln -sf libcs50.so.11.0.2 libcs50.so
mkdir -p build/include build/lib build/src
install -m 644 src/cs50.c build/src
install -m 644 src/cs50.h build/include
mv libcs50.so.11.0.2 libcs50.so libcs50.a build/lib
cc -Wall -Wextra -Werror -pedantic -std=c11 -fPIC -shared -Wl,-soname,libcs50.so.11 -o libcs50.so.11.0.2 src/cs50.c
cc -Wall -Wextra -Werror -pedantic -std=c11 -c -o libcs50.o src/cs50.c
ar rcs libcs50.a libcs50.o
chmod 644 libcs50.a
rm -f libcs50.o
ln -sf libcs50.so.11.0.2 libcs50.so
mkdir -p build/include build/lib build/src
install -m 644 src/cs50.c build/src
install -m 644 src/cs50.h build/include
mv libcs50.so.11.0.2 libcs50.so libcs50.a build/lib
cc -Wall -Wextra -Werror -pedantic -std=c11 -fPIC -shared -Wl,-soname,libcs50.so.11 -o libcs50.so.11.0.2 src/cs50.c
cc -Wall -Wextra -Werror -pedantic -std=c11 -c -o libcs50.o src/cs50.c
ar rcs libcs50.a libcs50.o
chmod 644 libcs50.a
rm -f libcs50.o
ln -sf libcs50.so.11.0.2 libcs50.so
mkdir -p build/include build/lib build/src
install -m 644 src/cs50.c build/src
install -m 644 src/cs50.h build/include
mv libcs50.so.11.0.2 libcs50.so libcs50.a build/lib
mkdir -p /usr/local/src /usr/local/lib /usr/local/include /usr/local/share/man/man3
cp -R build/include build/lib build/src /usr/local
cp -R docs/get_char.3.gz docs/get_double.3.gz docs/get_float.3.gz docs/get_int.3.gz docs/get_long.3.gz docs/get_long_long.3.gz docs/get_string.3.gz /usr/local/share/man/man3
ldconfig /usr/local/lib
[himmel@localhost libcs50-11.0.2]$ ls
Segmentation fault

1833 次点击
所在节点    Linux
25 条回复
Himmel
2023-10-25 12:13:02 +08:00
如果有大佬能知道原因也好啊,ld.so.cache 打开是乱码,实在是不知道方向
ysc3839
2023-10-25 12:46:32 +08:00
建议重装系统,以后记得用 Docker 跑
julyclyde
2023-10-25 12:53:31 +08:00
试试加个前缀,这样:
/lib64/ld-linux-x86-64.so.2 空格 /bin/ls
Himmel
2023-10-25 13:08:24 +08:00
@julyclyde 谢谢提醒,这个命令还是段错误
ldconfig 导致的,默认路径下的库应该能链接到的,可能是冲突了或者什么原因。
Himmel
2023-10-25 13:09:42 +08:00
@ysc3839 尽量不想重装,谢谢提醒,之后会用 docker 的
julyclyde
2023-10-25 13:11:45 +08:00
/lib64/ld-linux-x86-64.so.2 --inhibit-cache /bin/ls
试试参数--inhibit-cache
defunct9
2023-10-25 13:13:15 +08:00
上面装了啥很明显了。用 Raidrive 删掉安装的文件,应该就恢复了
Himmel
2023-10-25 13:15:27 +08:00
@defunct9 删掉了 so ,还是段错误。没有 root 权限的话,ldconfig 还需要更新吗?
Himmel
2023-10-25 13:18:27 +08:00
@julyclyde #6
[himmel@localhost c]$ /lib64/libc.so.6 --inhibit-cache /bin/ls
-bash: /lib64/libc.so.6: /opt/glibc/lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[himmel@localhost c]$ /lib64/ld-linux-x86-64.so.2 --inhibit-cache /bin/ls
Segmentation fault
[himmel@localhost c]$ /lib64/libc.so.6 --inhibit-cache /bin/ls
-bash: /lib64/libc.so.6: /opt/glibc/lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[himmel@localhost c]$ /lib64/ld-linux-x86-64.so.2 /lib64/libc.so.6 --inhibit-cache /bin/ls
Segmentation fault
是不是能找到的库有多个,冲突了?
julyclyde
2023-10-25 13:22:11 +08:00
看着,我也脑子有点乱
是不是/opt/glibc/lib/ld-linux-x86-64.so.2 也被搞坏了?
能 file 或者 cat 一下吗?
adoal
2023-10-25 13:24:56 +08:00
重新干净地 ldconfig 一下看看?它是个全静态的程序。
Himmel
2023-10-25 13:25:27 +08:00
@julyclyde #10 copy 到另一个机器上 file 了一下,
```
ld-linux-x86-64.so.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=716b53496071f8e0c40b6014becefedf3ac65541, with debug_info, not stripped
```
Himmel
2023-10-25 13:29:42 +08:00
@adoal 谢谢回复,因为没有 root 权限无法在/etc 创建,就指定了本地的一个空的 cache 文件,
```
ldconfig -C ./cache
```

没有恢复。
nodejsexpress
2023-10-25 13:42:11 +08:00
看看是不是环境变量 被改掉了.
之前遇到类似的问题. 加环境变量, 重装某些软件库, 加-f 强装
defunct9
2023-10-25 13:44:31 +08:00
你都 sudo 安装了,sudo -i 变成 root, ldconfig 看看
Corybyte
2023-10-25 13:46:47 +08:00
我的建议是重装
Himmel
2023-10-25 13:50:11 +08:00
@nodejsexpress 谢谢,我重设置了几个常用的变量都没起作用。
应该是 ldconfig 导致的,但是具体的原因我还没搞清楚。
Himmel
2023-10-25 13:50:52 +08:00
@defunct9 #15 谢谢,执行了 ldconfig 之后所有的命令几乎都段错误了,已经不能 root 了。
Himmel
2023-10-25 13:51:34 +08:00
@Corybyte 谢谢,目前还没搞清楚真正的原因,这样下去确实重装会更明智些。
elechi
2023-10-25 14:51:43 +08:00
看日志没啥特殊操作,把新装的库删掉,然后重启下是不是就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX