/usr/bin/ld: cannot find -lXrender
collect2: ld returned 1 exit status
make[1]: *** [../../../../lib/libQtWebKit.so.4.7.4] Error 1
make[1]: Leaving directory `/root/test/qt/qt-everywhere-opensource-src-4.7.4/src/3rdparty/webkit/WebCore'
make: *** [sub-webkit-make_default-ordered] Error 2
使用make命令編譯Qt原碼時出現了 /usr/bin/ld: cannot find -lXrender 問題:
/usr/bin/ld: cannot find -lXrender
collect2: ld 返回 1
make[1]: *** [../../../../lib/libQtWebKit.so.4.7.4] 錯誤 1
make[1]:正在離開目錄 `/home/Qt/qt-everywhere-opensource-src-4.7.4/src/3rdparty/webkit/WebCore'
make: *** [sub-webkit-make_default-ordered] 錯誤 2
其解決方案如下:
執行sudo apt-get install libXrender-dev命令,安裝相應的lib檔案。
所以最好在編譯Qt原碼前先執行以下命令:
sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-dev
sudo apt-get install libglui-dev
安裝相應的lib檔案,防止編譯出錯。
再上網搜尋一下,發現在Linux下編譯應用程式常常會出現如下錯誤:
/usr/bin/ld:cannot find -lxxx
意思是編譯過程找不到對應庫檔案。其中-lxxx表示連結庫檔案libxxx.so。
一般出現這種錯誤有以下幾種原因:
1.系統缺乏對應的庫檔案
2.庫檔案版本不對應
3.庫檔案連結錯誤
4.庫檔案路徑設定不正確
對於前2種情況,可以通過下載安裝lib來解決:
sudo apt-get install libxxx-dev(上面編譯Qt的情況大多是這樣)
而對於第3種情況,通過find或者locate命令定位到連結檔案,查看連結檔案是否正確的指向了lib檔案。如果不是,用 ln -sf */libxxx.so.x */libxxx.so 命令修改。
對於最後一種情況,可以到/etc/ld.so.conf.d目錄下,修改其中任意一份conf檔案(也可自建conf),將lib所在的目錄寫進去,然後在終端輸入ldconfig更新緩衝。