編譯環境
vm+ubuntu12.04 64bit + android ics4.0代碼
在編譯原始碼的時候出現該錯誤
/usr/bin/ld.bfd.real: cannot find -lGL
/usr/bin/ld.bfd.real: cannot find -lX11
根據網上大多數的說法,以及官網的介紹。截至5月底,android對ubuntu12.04的編譯平台的支援不是很推薦,有些庫的相容方面會有一些問題
這兩個錯誤判的錯其實就是說沒有在庫路徑中找到libGL.so libX11.so
但是開啟etc/ld.so.conf.d中查看64位的庫路徑下x86_64-linux-gnu.conf設定檔
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
該路徑下是有libGL.so的,並且查看檔案連結指向沒有問題。但是編譯起來還是有錯。
後來再查看了一些資料,因為編譯的時候還是用到了32BIT的libGL.so libX11.so庫檔案,編譯的時候找的不是X86_64庫檔案配置,而是找的是I386庫檔案配置
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i686-linux-gnu
/usr/lib/i686-linux-gnu
果然在I386目錄下沒有找到這兩個檔案
首先安裝這兩個庫檔案的32位版本:
$ sudo apt-get install
libx11-dev:i386(libX11.so)
$ sudo apt-get install
ibgl1-mesa-glx:i386
(libGL.so)
由於libGL.so系統預設沒有進行庫路徑下的連結,還需要手動連結一下
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
再編譯大功告成!
參考文檔:
https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/949606
http://groups.google.com/group/android-building/browse_thread/thread/dc8a3503676cd034
https://android-review.googlesource.com/#/c/37393/1/src/source/initializing.md
個人的系統配置不一,大家記得如果是
/usr/bin/ld.bfd.real: cannot find
類型的,先看看庫配置路徑是否正確(有木有),然後再看看是否存在32位庫與64位庫的區別問題。
解決方案參見ubuntu 編譯 /usr/bin/ld: cannot find 問題解決