簡體   English   中英

如何在編譯舊 MUD 時修復 collect2 錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM