V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Himmel
V2EX  ›  Linux

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

  •  
  •   Himmel · 2023-10-25 11:51:19 +08:00 · 1808 次点击
    这是一个创建于 389 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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