ppplinday 2017-06-13 02:14 采纳率: 0%
浏览 3117
已结题

Linux下错误操作了usr/bin/ld 现在连个g++都不能编译了 怎么办

我在终端用cp了一个.so进入usr/bin/ld 结果现在连hello world都不能编译。这个怎么办?

  • 写回答

2条回答 默认 最新

  • chenjiexixi 2017-06-13 02:14
    关注

    最近在linux上误操作,执行了如下命令:
    sudo cp /home/bizhi/Desktop/libusb-compat-0.1.5/libusb/.libs/libusb.so /usr/bin/ld
    然后执行了 ll /usr/bin/ld*
    lrwxrwxrwx 1 root root 6 2013-05-24 16:56 ld -> ld.bfd*
    -rwxr-xr-x 1 root root 49410 2013-06-09 19:34 ld.bfd*
    -rwxr-xr-x 1 root root 5279 2011-10-05 06:06 ldd*
    -rwxr-xr-x 1 root root 1796268 2011-09-22 21:07 ld.gold*
    好像并没有被覆盖掉。
    但是我接着用 gcc 或者 g++编译时,就会出现了如下错误
    ubuntu:~/test$ gcc a.c -o a
    collect2: ld terminated with signal 11 [Segmentation fault]
    a.c的源码如下

    #include
    #include
    int main(int argc,char *argv[])
    {
    printf("test\n");
    return 0;
    }

    因为之前gcc和g++是可以用的。不知道是不是由于我的误操作导致的,还是因为其他原因,请帮忙查看一下。谢谢!
    ------解决方案--------------------
    sudo cp /home/bizhi/Desktop/libusb-compat-0.1.5/libusb/.libs/libusb.so /usr/bin/ld
    你实际上是把libusb.so的内容给了ld -> ld.bfd*即,给了ld.bdf*,那么就是改变了ld.bfd的内容,所以编译通不过。cp就是拷贝,如果你要用libsub.so的链接的话,就改为用mv

    评论

报告相同问题?