2016-03-22 137 views
-2

我試圖使用gcc命令鏈接一個靜態庫,但它不起作用。GCC鏈接的靜態庫失敗

enter image description here

+3

請不要發佈文本的圖像。將實際測試複製粘貼到問題的正文中。您可能還想[閱讀如何提出問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,完整和可驗證示例](http: //stackoverflow.com/help/mcve)。 –

回答

0

如果你想使用-l標誌命令添加到您的應用程序,像這樣鏈接:

gcc t.c -L. -lt1.a -o t 

那麼你的。一個歸檔需要有libt1.a不僅僅是t1.a一個文件名。

當使用-lsome_name庫中的鏈接,鏈接器將查找名爲libsomename.solibsomename.a

如果你不想重命名。一個存檔文件,你也可以做

gcc t.c t1.a -o t 

此外,在未來,請不要發佈您的代碼或命令的圖像,只需複製粘貼文本到您的文章

+0

probelom解決了,但是當我試圖添加param'-static'時,我得到了「ld:library找不到-lcrt0.o」錯誤 – Richard

+0

@Rickard好吧,但是如果你需要幫助,你應該問一個新問題。 – nos

0

圖書館POSIX環境(如Linux和OSX)通常以lib<name of library>.a的模式命名。當您與圖書館鏈接時,或者使用-l選項,只能使用<name of library>,鏈接器會自動添加lib前綴和.a後綴。 您不使用-l選項,而是給出整個文件名稱verbatime。

既然你不使用標準的命名方案庫,你不能。如果你想使用使用-l選項,而是必須明確使用的庫文件,類似於

$ gcc ... t1.a 

你有-l選項命名你的庫libt1.a只有使用t1鏈接時:

$ gcc ... -L. -lt1 
+0

probelom解決了,但是當我試圖添加param'-static'時,我得到「ld:library找不到-lcrt0.o」錯誤 – Richard