連結錯誤的直接表現就是:****符号未定義。幾種常見的連結錯誤如下:
缺少*.o檔案 ---- 對策:将相應的檔案加入Makefile或指令行
*.o檔案未更新 ---- 對策:删除舊*.o檔案重新編譯或者依賴于最新的depend來編譯(增删檔案時確定make depend)。
缺少相應的庫檔案 ---- 對策:将相應的檔案加入Makefile或指令行
依賴的庫檔案版本不對或未更新 ---- 對策:重新生成所依賴的庫檔案
庫檔案的出現順序不對 ----- 對策:根據庫的依賴關系,調整庫出現的順序。原則:隻允許先出現的庫依賴于後出現的庫。
其中,第5種錯誤最難發現。如果發現程式所需的庫都已經引入,但仍出現連結錯誤,應理清庫之間的依賴關系,确認是否某些基本庫被放到前面,導緻後面的庫無法找到前面庫中的符号資訊!據說對于高版本gcc沒有這個問題。
本文轉自 zhenjing 部落格園部落格,原文連結:http://www.cnblogs.com/zhenjing/archive/2011/04/20/2021780.html ,如需轉載請自行聯系原作者