美文网首页
Android make报错:"/usr/bin/ld

Android make报错:"/usr/bin/ld

作者: forty_seven | 来源:发表于2018-09-20 17:13 被阅读194次

    在编译底层supernova时报错:

    xxxxx$ make image_all
             .....
    
    generate executable fail:
    /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so 时跳过不兼容的 -lstdc++
    /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a 时跳过不兼容的 -lstdc++
    /usr/bin/ld: 找不到 -lstdc++
    collect2: error: ld returned 1 exit status
    
    问题原因:

    该问题一般是由于ld在进行库的连接时找不到库文件所致.

    解决方案:

    出现该问题时,去lib目录下查找相关的库文件,基本如下:

    1.查看本机/usr下的存放lib的目录有:lib lib32 libx32
    $ cd /usr
    $ ls
    bin  games  include  lib  lib32  libx32  local  sbin  share  src
    
    2.分别去lib lib32 libx32目录下查找相应的libxxx

    本机lib libx32下都没有相关库文件,在lib32下有但没有libstdc++.so的链接;

    $ cd /usr/lib32/
    $ ll | grep libstdc++
    lrwxrwxrwx  1 root root      19  2月 14  2018 libstdc++.so.6 -> libstdc++.so.6.0.19
    -rw-r--r--  1 root root  922096  2月 14  2018 libstdc++.so.6.0.19
    

    上述库文件中没有库的入口: libstdc++.so

    3.可以通过手动建立连接来解决
    $ sudo ln -s ./libstdc++.so.6 ./libstdc++.so
    $ ll | grep libstdc++
    lrwxrwxrwx  1 root root      16  9月 20 16:33 libstdc++.so -> ./libstdc++.so.6
    lrwxrwxrwx  1 root root      19  2月 14  2018 libstdc++.so.6 -> libstdc++.so.6.0.19
    -rw-r--r--  1 root root  922096  2月 14  2018 libstdc++.so.6.0.19
    

    再重新编译没问题了。

    网上看到其它的解决方案,但在我的Ubuntu机器上不奏效,这里只是贴出来,供参考。

    该问题应该是该库的头文件库没有安装所致:
    [root@localhost lib]# yum list all | grep ltdl
    libtool-ltdl.i386 1.5.22-7.el5_4 installed
    libtool-ltdl-devel.i386 1.5.22-7.el5_4 CentOs5.5-32

    安装头文件:
    [root@localhost lib]# yum -y install libtool-ltdl-devel.i386

    。。。

    查看后发现该错误确实是由devel头文件未安装所致。
    [root@localhost lib]# rpm -ql libtool-ltdl-devel.i386
    /usr/include/ltdl.h
    /usr/lib/libltdl.a
    /usr/lib/libltdl.la
    /usr/lib/libltdl.so

    OK.问题解决~

    相关文章

      网友评论

          本文标题:Android make报错:"/usr/bin/ld

          本文链接:https://www.haomeiwen.com/subject/bwennftx.html