/usr/bin/ld: cannot find -lgcc_s 問題解決小記 - cassvin - 部落格園
/usr/bin/ld: cannot find -lgcc_s 問題解決小記
由於之前用wubi裝的ubuntu並且只給了它10G的硬碟空間,隨著學習的深入這種配備已經無法滿足我的需求了。今天索性把ubuntu從windows上“卸載了”,划了20G -_-的空餘空間準備安裝ubuntu雙系統。雙系統的安裝過程很順利,但接下來Qtopia的編譯就不是很順利了。我根據前面編譯Qtopia時做的記錄文檔對源檔案還有系統變數進行了若干修改,但是實際編譯的過程卻跳出了我之前沒有遇到的問題。
/usr/bin/ld: cannot find -lgcc_s
終端不斷跳出這個錯誤提示。意思是系統找不到需要連結的庫檔案。(該庫檔案為libgcc_s.so)
gcc編譯器我用的是3.4.6的版本。一開始我以為系統找不到3.4版本對應的庫檔案,故開啟/etc/ld.so.conf.d目錄,添加i486-linux-gnu.conf檔案,編輯如下:
# Multiarch support
/usr/lib/gcc/i486-linux-gnu/3.4.6/
#添加庫檔案尋找路徑
終端下輸入指令:ldconfig 以更新緩衝。
但是再次編譯Qtopia發現還是一樣的問題。斷定不是庫檔案目錄缺失的問題。於是我自己到/usr/lib/gcc/i486-linux-gnu/3.4.6/檔案夾下尋找libgcc_s.so檔案。libgcc_s.so是一個連結檔案,連結到對應目錄的libgcc_s.so.1檔案。開啟libgcc_s.so彈出提示連結已損壞。於是一切豁然開朗:檔案未能連結到正常的庫檔案。接下來在終端下輸入:
locate libgcc_s.so.1
以尋找庫檔案實際路徑(註:我電腦裡面同時有4.5版的編譯器,該版連結的也是這一個庫檔案)
彈出:
/lib/i386-linux-gnu/libgcc_s.so.1
於是重新導向3.4版編譯的的libgcc_s.so連結
ln -sf /lib/i386-linux-gnu/libgcc_s.so.1/usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s.so
為了驗證是否能正確連結到,我在案頭上建立了hello.c檔案並vim之
1 #include <stdio.h>
2 int main(int agrc, char**argv)
3 {
4 printf("Hello World!");
5 return0;
6 }
編譯:gcc -o hello hello.c
無錯誤提示。
運行:./hello
得到我們熟悉的“Hello World!”,呼,問題終於解決了!!!
馬上切換到qtopia目錄下編譯,過程很順利,曆經半個小時,終於再次見到我們熟悉的Qtopia畫面,欣慰!!^_^
(由於無聊,我查看了/usr/lib/gcc/i486-linux-gnu/3.4.6/目錄下所有的連結檔案,發現libstdc++.so這個連結也損壞了,重新導向為:/usr/lib/i386-linux-gnu/libstdc++.so.6:ln -sf /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/gcc/i486-linux-gnu/3.4.6/libstdc++.so)
由於之前用wubi裝的ubuntu並且只給了它10G的硬碟空間,隨著學習的深入這種配備已經無法滿足我的需求了。今天索性把ubuntu從windows上“卸載了”,划了20G -_-的空餘空間準備安裝ubuntu雙系統。雙系統的安裝過程很順利,但接下來Qtopia的編譯就不是很順利了。我根據前面編譯Qtopia時做的記錄文檔對源檔案還有系統變數進行了若干修改,但是實際編譯的過程卻跳出了我之前沒有遇到的問題。
/usr/bin/ld: cannot find -lgcc_s
終端不斷跳出這個錯誤提示。意思是系統找不到需要連結的庫檔案。(該庫檔案為libgcc_s.so)
gcc編譯器我用的是3.4.6的版本。一開始我以為系統找不到3.4版本對應的庫檔案,故開啟/etc/ld.so.conf.d目錄,添加i486-linux-gnu.conf檔案,編輯如下:
# Multiarch support
/usr/lib/gcc/i486-linux-gnu/3.4.6/
#添加庫檔案尋找路徑
終端下輸入指令:ldconfig 以更新緩衝。
但是再次編譯Qtopia發現還是一樣的問題。斷定不是庫檔案目錄缺失的問題。於是我自己到/usr/lib/gcc/i486-linux-gnu/3.4.6/檔案夾下尋找libgcc_s.so檔案。libgcc_s.so是一個連結檔案,連結到對應目錄的libgcc_s.so.1檔案。開啟libgcc_s.so彈出提示連結已損壞。於是一切豁然開朗:檔案未能連結到正常的庫檔案。接下來在終端下輸入:
locate libgcc_s.so.1
以尋找庫檔案實際路徑(註:我電腦裡面同時有4.5版的編譯器,該版連結的也是這一個庫檔案)
彈出:
/lib/i386-linux-gnu/libgcc_s.so.1
於是重新導向3.4版編譯的的libgcc_s.so連結
ln -sf /lib/i386-linux-gnu/libgcc_s.so.1/usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s.so
為了驗證是否能正確連結到,我在案頭上建立了hello.c檔案並vim之
1 #include <stdio.h>
2 int main(int agrc, char**argv)
3 {
4 printf("Hello World!");
5 return0;
6 }
編譯:gcc -o hello hello.c
無錯誤提示。
運行:./hello
得到我們熟悉的“Hello World!”,呼,問題終於解決了!!!
馬上切換到qtopia目錄下編譯,過程很順利,曆經半個小時,終於再次見到我們熟悉的Qtopia畫面,欣慰!!^_^
(由於無聊,我查看了/usr/lib/gcc/i486-linux-gnu/3.4.6/目錄下所有的連結檔案,發現libstdc++.so這個連結也損壞了,重新導向為:/usr/lib/i386-linux-gnu/libstdc++.so.6:ln -sf /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/gcc/i486-linux-gnu/3.4.6/libstdc++.so)