Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
Himmel
V2EX  ›  Linux

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

  •  
  •   Himmel · Oct 25, 2023 · 2947 views
    This topic created in 1108 days ago, the information mentioned may be changed or developed.

    想要学习 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
    
    
    25 replies  •  2023-10-25 17:05:42 +08:00
    Himmel
    Himmel
    OP
    Oct 25, 2023
    1
    如果有大佬能知道原因也好啊,ld.so.cache 打开是乱码,实在是不知道方向
    ysc3839
    ysc3839
    Oct 25, 2023 via Android
    2
    建议重装系统,以后记得用 Docker 跑
    julyclyde
    julyclyde
    Oct 25, 2023
    3
    试试加个前缀,这样:
    /lib64/ld-linux-x86-64.so.2 空格 /bin/ls
    Himmel
    Himmel
    OP
    Oct 25, 2023
    4
    @julyclyde 谢谢提醒,这个命令还是段错误
    ldconfig 导致的,默认路径下的库应该能链接到的,可能是冲突了或者什么原因。
    Himmel
    Himmel
    OP
    Oct 25, 2023
    5
    @ysc3839 尽量不想重装,谢谢提醒,之后会用 docker 的
    julyclyde
    julyclyde
    Oct 25, 2023
    6
    /lib64/ld-linux-x86-64.so.2 --inhibit-cache /bin/ls
    试试参数--inhibit-cache
    defunct9
    defunct9
    Oct 25, 2023
    7
    上面装了啥很明显了。用 Raidrive 删掉安装的文件,应该就恢复了
    Himmel
    Himmel
    OP
    Oct 25, 2023
    8
    @defunct9 删掉了 so ,还是段错误。没有 root 权限的话,ldconfig 还需要更新吗?
    Himmel
    Himmel
    OP
    Oct 25, 2023
    9
    @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
    julyclyde
    Oct 25, 2023
    10
    看着,我也脑子有点乱
    是不是/opt/glibc/lib/ld-linux-x86-64.so.2 也被搞坏了?
    能 file 或者 cat 一下吗?
    adoal
    adoal
    Oct 25, 2023
    11
    重新干净地 ldconfig 一下看看?它是个全静态的程序。
    Himmel
    Himmel
    OP
    Oct 25, 2023
    12
    @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
    Himmel
    OP
    Oct 25, 2023
    13
    @adoal 谢谢回复,因为没有 root 权限无法在/etc 创建,就指定了本地的一个空的 cache 文件,
    ```
    ldconfig -C ./cache
    ```

    没有恢复。
    nodejsexpress
    nodejsexpress
    Oct 25, 2023
    14
    看看是不是环境变量 被改掉了.
    之前遇到类似的问题. 加环境变量, 重装某些软件库, 加-f 强装
    defunct9
    defunct9
    Oct 25, 2023
    15
    你都 sudo 安装了,sudo -i 变成 root, ldconfig 看看
    Corybyte
    Corybyte
    Oct 25, 2023
    16
    我的建议是重装
    Himmel
    Himmel
    OP
    Oct 25, 2023
    17
    @nodejsexpress 谢谢,我重设置了几个常用的变量都没起作用。
    应该是 ldconfig 导致的,但是具体的原因我还没搞清楚。
    Himmel
    Himmel
    OP
    Oct 25, 2023
    18
    @defunct9 #15 谢谢,执行了 ldconfig 之后所有的命令几乎都段错误了,已经不能 root 了。
    Himmel
    Himmel
    OP
    Oct 25, 2023
    19
    @Corybyte 谢谢,目前还没搞清楚真正的原因,这样下去确实重装会更明智些。
    elechi
    elechi
    Oct 25, 2023
    20
    看日志没啥特殊操作,把新装的库删掉,然后重启下是不是就好了
    Corybyte
    Corybyte
    Oct 25, 2023
    21
    @Himmel #19 昨天 Archlinux 由于本人错误的使用,经常在 root 权限下使用 yay ,成功的把/var/cache/private/yay 的目录权限搞烂了,随即选择重开
    ratazzi
    ratazzi
    PRO
    Oct 25, 2023
    22
    看看机器上有没有 busybox 或许能救命
    NessajCN
    NessajCN
    Oct 25, 2023
    23
    rm /etc/ld.so.cache
    ldconfig
    nuk
    nuk
    Oct 25, 2023
    24
    重启一下就行了吧
    Himmel
    Himmel
    OP
    Oct 25, 2023
    25
    谢谢大佬们的帮助,重启了以后 ssh 连不上了,还是决定重装了,这样简单很多。
    谢谢大家,此帖终结。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1901 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 15:24 · PVG 23:24 · LAX 07:24 · JFK 10:24
    ♥ Do have faith in what you're doing.