在編譯底層supernova時(shí)報(bào)錯(cuò):
xxxxx$ make image_all
.....
generate executable fail:
/usr/bin/ld: 當(dāng)搜索用于 /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so 時(shí)跳過(guò)不兼容的 -lstdc++
/usr/bin/ld: 當(dāng)搜索用于 /usr/lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a 時(shí)跳過(guò)不兼容的 -lstdc++
/usr/bin/ld: 找不到 -lstdc++
collect2: error: ld returned 1 exit status
問(wèn)題原因:
該問(wèn)題一般是由于ld在進(jìn)行庫(kù)的連接時(shí)找不到庫(kù)文件所致.
解決方案:
出現(xiàn)該問(wèn)題時(shí)寡壮,去lib目錄下查找相關(guān)的庫(kù)文件抽碌,基本如下:
1.查看本機(jī)/usr下的存放lib的目錄有:lib lib32 libx32
$ cd /usr
$ ls
bin games include lib lib32 libx32 local sbin share src
2.分別去lib lib32 libx32目錄下查找相應(yīng)的libxxx
本機(jī)lib libx32下都沒(méi)有相關(guān)庫(kù)文件伞访,在lib32下有但沒(méi)有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
上述庫(kù)文件中沒(méi)有庫(kù)的入口: libstdc++.so
3.可以通過(guò)手動(dòng)建立連接來(lái)解決
$ 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
再重新編譯沒(méi)問(wèn)題了皆撩。
網(wǎng)上看到其它的解決方案捍壤,但在我的Ubuntu機(jī)器上不奏效,這里只是貼出來(lái)栈妆,供參考胁编。
該問(wèn)題應(yīng)該是該庫(kù)的頭文件庫(kù)沒(méi)有安裝所致:
[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
。鳞尔。嬉橙。
查看后發(fā)現(xiàn)該錯(cuò)誤確實(shí)是由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.問(wèn)題解決~