[英]How do I fix collect2 error while compiling an old MUD?
我正在嘗試在 Ubuntu 機器上運行 make 來編譯 RoT MUD,但我得到的最遠的是當我得到一個collect2: error: ld returned 1 exit status
。
這是在終端中的錯誤之前立即出現的內容(以及許多其他類似的錯誤):
/usr/bin/ld: obj/wizlist.o:/home/lucas/Projects/R2b5/src/merc.h:3355: multiple definition of `bllmax'; obj/act_comm.o:/home/lucas/Projects/R2b5/src/merc.h:3355: first defined here
從我收集的信息來看,這意味着頭文件中有變量聲明,並且使用static
是一個簡單的解決方法,但是,我無法弄清楚應該在代碼中放置該關鍵字的位置來解決這個問題問題。 以下是bllmax
中唯一提到的bllmax:
int bllmax, crbmax, crnmax, srpmax, mngmax;
這是我試圖編譯的程序。
您需要了解聲明和定義之間的區別。 聲明告訴編譯器該符號存在於某處但可能不在此處。 定義告訴編譯器該符號存在於此處。
您顯示的行(沒有任何上下文)正在定義變量,這意味着它們將在包含頭文件的每個源文件中定義。
它應該做的是聲明變量,這可以通過使它們extern
來完成:
extern int bllmax, crbmax, crnmax, srpmax, mngmax;
然后在單個源文件中定義變量(不帶extern
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.