想要学习 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
1
Himmel OP |
2
ysc3839 2023-10-25 12:46:32 +08:00 via Android
建议重装系统,以后记得用 Docker 跑
|
3
julyclyde 2023-10-25 12:53:31 +08:00
试试加个前缀,这样:
/lib64/ld-linux-x86-64.so.2 空格 /bin/ls |
4
Himmel OP @julyclyde 谢谢提醒,这个命令还是段错误
ldconfig 导致的,默认路径下的库应该能链接到的,可能是冲突了或者什么原因。 |
6
julyclyde 2023-10-25 13:11:45 +08:00
/lib64/ld-linux-x86-64.so.2 --inhibit-cache /bin/ls
试试参数--inhibit-cache |
7
defunct9 2023-10-25 13:13:15 +08:00
上面装了啥很明显了。用 Raidrive 删掉安装的文件,应该就恢复了
|
9
Himmel OP @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 是不是能找到的库有多个,冲突了? |
10
julyclyde 2023-10-25 13:22:11 +08:00
看着,我也脑子有点乱
是不是/opt/glibc/lib/ld-linux-x86-64.so.2 也被搞坏了? 能 file 或者 cat 一下吗? |
11
adoal 2023-10-25 13:24:56 +08:00
重新干净地 ldconfig 一下看看?它是个全静态的程序。
|
12
Himmel OP @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 ``` |
13
Himmel OP |
14
nodejsexpress 2023-10-25 13:42:11 +08:00
看看是不是环境变量 被改掉了.
之前遇到类似的问题. 加环境变量, 重装某些软件库, 加-f 强装 |
15
defunct9 2023-10-25 13:44:31 +08:00
你都 sudo 安装了,sudo -i 变成 root, ldconfig 看看
|
16
Corybyte 2023-10-25 13:46:47 +08:00
我的建议是重装
|
17
Himmel OP @nodejsexpress 谢谢,我重设置了几个常用的变量都没起作用。
应该是 ldconfig 导致的,但是具体的原因我还没搞清楚。 |
20
elechi 2023-10-25 14:51:43 +08:00
看日志没啥特殊操作,把新装的库删掉,然后重启下是不是就好了
|
21
Corybyte 2023-10-25 14:52:03 +08:00
@Himmel #19 昨天 Archlinux 由于本人错误的使用,经常在 root 权限下使用 yay ,成功的把/var/cache/private/yay 的目录权限搞烂了,随即选择重开
|
22
ratazzi 2023-10-25 15:14:21 +08:00
看看机器上有没有 busybox 或许能救命
|
23
NessajCN 2023-10-25 15:19:15 +08:00
rm /etc/ld.so.cache
ldconfig |
24
nuk 2023-10-25 15:22:26 +08:00
重启一下就行了吧
|
25
Himmel OP 谢谢大佬们的帮助,重启了以后 ssh 连不上了,还是决定重装了,这样简单很多。
谢谢大家,此帖终结。 |