Не удалось скомпилировать кодовую базу MUD старше 15 лет, написанную на C - PullRequest
0 голосов
/ 06 января 2020

Я использовал эту кодовую базу для запуска грязи в начале 2000-х, и через это, чтобы научить себя очень элементарному кодированию.

Я только что получил копию кодовой базы от администратора / кодера, который управлял сервер передо мной, и я почти уверен, что тогда он будет скомпилирован как есть, но теперь не будет.

Мое единственное предположение, что он как-то связан с обновлениями G CC за последние 15-20 лет, но я, по общему признанию, новичок, и здесь я совершенно не в себе.

Это ошибка, которую я получаю после примерно ста страниц предупреждений, когда пытаюсь скомпилировать ее, используя make:

[18:24:54] finger.c ...
In file included from finger.c:10:0:
../src/include/merc.h:5149:13: warning: inline function ‘check_toughness’ declared but never defined
 inline int  check_toughness args( ( CD *ch, CD *victim, int dam));
             ^~~~~~~~~~~~~~~
[18:24:54] Linking Executable ...
obj/fight.o: In function `group_gain':
tbw/reloaded/src/fight.c:5514: undefined reference to `xp_compute'
tbw/reloaded/src/fight.c:5516: undefined reference to `xp_compute'
tbw/reloaded/src/fight.c:5518: undefined reference to `xp_compute'
obj/fight.o: In function `one_hit':
tbw/reloaded/src/fight.c:2457: undefined reference to `check_toughness'
obj/mage.o: In function `do_chant':
tbw/reloaded/src/mage.c:345: undefined reference to `check_toughness'
tbw/reloaded/src/mage.c:361: undefined reference to `check_toughness'
tbw/reloaded/src/mage.c:377: undefined reference to `check_toughness'
tbw/reloaded/src/mage.c:393: undefined reference to `check_toughness'
obj/mage.o:tbw/reloaded/src/mage.c:409: more undefined references to `check_toughness' follow
obj/update.o: In function `mobile_update':
tbw/reloaded/src/update.c:756: undefined reference to `werewolf_regen'
obj/powerl.o: In function `do_planarstorm':
tbw/reloaded/src/powerl.c:680: undefined reference to `check_toughness'
collect2: error: ld returned 1 exit status
Makefile:27: recipe for target '../src/reloaded' failed
make: *** [../src/reloaded] Error 1

База кода и ссылочные файлы огромны, поэтому я подумал, что прикреплять их пока не имеет смысла, но при необходимости я могу их точно предоставить.

Напомним, что такие функции, как «check_toughness» и «xp_compute» определенно определены в этих файлах после нескольких тысяч LO C.

Буду признателен за любые предложения, спасибо!

1 Ответ

2 голосов
/ 06 января 2020

Спасибо всем, кто пришел с предложениями!

Самый простой ответ дал rici :

Это, вероятно, результат кода используя старую уникальную семантику c g cc для inline. Попробуйте скомпилировать с помощью --std = gnu89 (если вы используете g cc).

Добавление этого в Makefile устранит все ошибки и приведет к успешной компиляции.

...