问题描述
我正在尝试为原始厄运编译源代码,作为学习C的一种方式.我从 github ,并修复了i_video.c第49行(errnos.h-> errno.h)中的一个明显错误.
I am trying to compile the source code for the original doom as a way to learn C. I downloaded it from github and fixed an obvious mistake in i_video.c line 49 (errnos.h -> errno.h).
我现在得到这个:
m_misc.c:257:5: warning: initialization from incompatible pointer type [enabled by default]
m_misc.c:257:5: warning: (near initialization for ‘defaults[14].location’) [enabled by default]
m_misc.c:257:5: error: initializer element is not computable at load time
m_misc.c:257:5: error: (near initialization for ‘defaults[14].defaultvalue’)
m_misc.c:264:35: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:264:5: error: initializer element is not constant
m_misc.c:264:5: error: (near initialization for ‘defaults[16].defaultvalue’)
m_misc.c:265:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:265:5: error: initializer element is not constant
m_misc.c:265:5: error: (near initialization for ‘defaults[17].defaultvalue’)
m_misc.c:288:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:288:5: error: initializer element is not constant
m_misc.c:288:5: error: (near initialization for ‘defaults[31].defaultvalue’)
m_misc.c:289:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:289:5: error: initializer element is not constant
m_misc.c:289:5: error: (near initialization for ‘defaults[32].defaultvalue’)
m_misc.c:290:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:290:5: error: initializer element is not constant
m_misc.c:290:5: error: (near initialization for ‘defaults[33].defaultvalue’)
m_misc.c:291:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:291:5: error: initializer element is not constant
m_misc.c:291:5: error: (near initialization for ‘defaults[34].defaultvalue’)
m_misc.c:292:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:292:5: error: initializer element is not constant
m_misc.c:292:5: error: (near initialization for ‘defaults[35].defaultvalue’)
m_misc.c:293:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:293:5: error: initializer element is not constant
m_misc.c:293:5: error: (near initialization for ‘defaults[36].defaultvalue’)
m_misc.c:294:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:294:5: error: initializer element is not constant
m_misc.c:294:5: error: (near initialization for ‘defaults[37].defaultvalue’)
m_misc.c:295:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:295:5: error: initializer element is not constant
m_misc.c:295:5: error: (near initialization for ‘defaults[38].defaultvalue’)
m_misc.c:296:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:296:5: error: initializer element is not constant
m_misc.c:296:5: error: (near initialization for ‘defaults[39].defaultvalue’)
m_misc.c:297:45: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
m_misc.c:297:5: error: initializer element is not constant
m_misc.c:297:5: error: (near initialization for ‘defaults[40].defaultvalue’)
m_misc.c: In function ‘M_LoadDefaults’:
m_misc.c:395:5: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
make: *** [linux/m_misc.o] Error 1
在包含强制转换的行上进行此声明期间,在m_misc.c文件中
:
in the m_misc.c file during this declaration on the lines that contain casts:
default_t defaults[] =
{
{"mouse_sensitivity",&mouseSensitivity, 5},
{"sfx_volume",&snd_SfxVolume, 8},
{"music_volume",&snd_MusicVolume, 8},
{"show_messages",&showMessages, 1},
#ifdef NORMALUNIX
{"key_right",&key_right, KEY_RIGHTARROW},
{"key_left",&key_left, KEY_LEFTARROW},
{"key_up",&key_up, KEY_UPARROW},
{"key_down",&key_down, KEY_DOWNARROW},
{"key_strafeleft",&key_strafeleft, ','},
{"key_straferight",&key_straferight, '.'},
{"key_fire",&key_fire, KEY_RCTRL},
{"key_use",&key_use, ' '},
{"key_strafe",&key_strafe, KEY_RALT},
{"key_speed",&key_speed, KEY_RSHIFT},
// UNIX hack, to be removed.
#ifdef SNDSERV
{"sndserver", (int *) &sndserver_filename, (int) "sndserver"},
{"mb_used", &mb_used, 2},
#endif
#endif
#ifdef LINUX
{"mousedev", (int*)&mousedev, (int)"/dev/ttyS0"},
{"mousetype", (int*)&mousetype, (int)"microsoft"},
#endif
{"use_mouse",&usemouse, 1},
{"mouseb_fire",&mousebfire,0},
{"mouseb_strafe",&mousebstrafe,1},
{"mouseb_forward",&mousebforward,2},
{"use_joystick",&usejoystick, 0},
{"joyb_fire",&joybfire,0},
{"joyb_strafe",&joybstrafe,1},
{"joyb_use",&joybuse,3},
{"joyb_speed",&joybspeed,2},
{"screenblocks",&screenblocks, 9},
{"detaillevel",&detailLevel, 0},
{"snd_channels",&numChannels, 3},
{"usegamma",&usegamma, 0},
{"chatmacro0", (int *) &chat_macros[0], (int) HUSTR_CHATMACRO0 },
{"chatmacro1", (int *) &chat_macros[1], (int) HUSTR_CHATMACRO1 },
{"chatmacro2", (int *) &chat_macros[2], (int) HUSTR_CHATMACRO2 },
{"chatmacro3", (int *) &chat_macros[3], (int) HUSTR_CHATMACRO3 },
{"chatmacro4", (int *) &chat_macros[4], (int) HUSTR_CHATMACRO4 },
{"chatmacro5", (int *) &chat_macros[5], (int) HUSTR_CHATMACRO5 },
{"chatmacro6", (int *) &chat_macros[6], (int) HUSTR_CHATMACRO6 },
{"chatmacro7", (int *) &chat_macros[7], (int) HUSTR_CHATMACRO7 },
{"chatmacro8", (int *) &chat_macros[8], (int) HUSTR_CHATMACRO8 },
{"chatmacro9", (int *) &chat_macros[9], (int) HUSTR_CHATMACRO9 }
};
这与现代编译器不兼容吗?有没有人设法通过它?
Is this an incompatibility with modern compilers? Has anyone managed to get passed it?
推荐答案
如果使用的是64位编译器,请尝试使用 -m32
标志并与 -L/usr链接/lib/i386-linux-gnu/
(用于32位库).
If you are using 64-bit compiler, try to use the -m32
flag and link with -L/usr/lib/i386-linux-gnu/
for 32-bit libraries.
顺便说一句,如果您要编译此源代码,由于此版本需要320x200的屏幕分辨率,因此在运行时仍然会遇到问题.否则它将无法运行.
By the way, if you will compile this source, you will still have an issue with running as this build needs 320x200 screen resolution. Otherwise it will not run.
我正在使用DOOM的SDL端口,因此您可以从 GitHub 尝试我的源代码.
I am working on the SDL port of the DOOM, so you can try my source from the GitHub.
您将需要安装SDL库才能运行它.而且,那里没有声音.
You will need to install SDL library to run it. Also, there is no sound there.
这篇关于如何在Ubuntu上编译厄运?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!