/usr/bin/ld: cannot find -lgcc_s 問題解決小記
博客分類:
Linux/Ubuntu
由於之前用wubi裝的ubuntu並且只給了它10G的硬盤空間,隨着學習的深入這種 配備已經無法滿足我的需求了。今天索性把ubuntu從windows上“卸載了”,划了20G -_-的空余空間准備安裝ubuntu雙系統。雙系統的安裝過程很順利,但接下來Qtopia的編譯就不是很順利了。我根據前面編譯Qtopia時做的記 錄文檔對源文件還有系統變量進行了若干修改,但是實際編譯的過程卻跳出了我之前沒有遇到的問題。
Linux代碼 收藏代碼
/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文件,編輯如下:
Linux代碼 收藏代碼
# 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彈出 提示鏈接已損壞。於是一切豁然開朗:文件未能鏈接到正常的庫文件。接下來在終端下輸入:
Java代碼 收藏代碼
locate libgcc_s.so.1
以尋找庫文件實際路徑(注:我電腦里面同時有4.5版的編譯器,該版鏈接的也是這一個庫文件)
彈出:
Linux代碼 收藏代碼
/lib/i386-linux-gnu/libgcc_s.so.1
於是重定向3.4版編譯的的libgcc_s.so鏈接
Linux代碼 收藏代碼
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之
C代碼 收藏代碼
#include <stdio.h>
int main()
{
printf("Hello World!\n");
}
編譯:gcc -o hello hello.c
無錯誤提示。
運行:./hello
得到我們熟悉的“Hello World!”,呼,問題終於解決了!!!
附:Linux文件鏈接命令
例:$ ln - s lunch /home/xu
用戶為當前目錄下的文件lunch創建了一個符號鏈接/home/xu。
刪除符號鏈接,有創建就有刪除
rm -rf symbolic_name 注意不是rm -rf symbolic_name/
鏈接文件的查看命令:ls
例如:ls -al或者ls -li