2012-07-05 63 views
2

我想鏈接一個靜態庫,我創建,但我得到這個錯誤。ranlib和靜態庫

libmine.a: could not read symbols: Archive has no index; run ranlib to add one 

我試圖做ranlib libmine.a,但什麼都沒有改變,它仍然給出了同樣的錯誤。我怎麼解決這個問題?

+1

爲什麼不簡單'ar czvf libmine.a * .o'?另見http://stackoverflow.com/questions/2765240/could-not-read-symbols-archive-has-no-index-run-ranlib-to-add-one – 2012-07-05 14:22:27

+2

nm nmmine.a的輸出是什麼'?我已經運行了大約15年的'ranlib' - 因爲'ar'處理它已經不再需要了。 – trojanfoe 2012-07-05 14:22:36

回答

3

要查看存檔中的符號,請使用nm。

nm -s libmine.a 

<輸出>

的入口點的子程序應該

 
00000000 T _sub1 
00000019 T _sub2 

你在「AR」用什麼開關,使靜態庫被標有「T」的?我通常使用的「芳-r」作爲

ar -r libmine.a mine.o yours.o 

如果您仍然有問題,添加「-s」選項

ar -s -r libmine.a mine.o yours.o 

此外,要確保沒有其他「libmine。一個「路徑中的文件,或者爲你的」libmine.a「做一個明確的路徑。鏈接器有可能挑選不同的「libmine.a」。