/usr/bin/ld: cannot find -lgcc_s 問題解決小記



/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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM