24.Android make报错:"/usr/bin/ld: cannot find -lXXX"

在编译底层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.问题解决~

你可能感兴趣的:(24.Android make报错:"/usr/bin/ld: cannot find -lXXX")