1 2 Info on using Mesa 3.0 with Linux Quake I and Quake II 3 4 5 6Disclaimer 7---------- 8 9I am _not_ a Quake expert by any means. I pretty much only run it to 10test Mesa. There have been a lot of questions about Linux Quake and 11Mesa so I'm trying to provide some useful info here. If this file 12doesn't help you then you should look elsewhere for help. The Mesa 13mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup 14might be good. 15 16Again, all the information I have is in this file. Please don't email 17me with questions. 18 19If you have information to contribute to this file please send it to 20me at brianp@elastic.avid.com 21 22 23 24Linux Quake 25----------- 26 27You can get Linux Quake from http://www.idsoftware.com/ 28 29Quake I and II for Linux were tested with, and include, Mesa 2.6. You 30shouldn't have too many problems if you simply follow the instructions 31in the Quake distribution. 32 33 34 35RedHat 5.0 Linux problems 36------------------------- 37 38RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas 39previous RedHat and other Linux distributions use "libc5" for its 40runtime C library. 41 42Linux Quake I and II were compiled for libc5. If you compile Mesa 43on a RedHat 5.x system the resulting libMesaGL.so file will not work 44with Linux Quake because of the different C runtime libraries. 45The symptom of this is a segmentation fault soon after starting Quake. 46 47If you want to use a newer version of Mesa (like 3.x) with Quake on 48RedHat 5.x then read on. 49 50The solution to the C library problem is to force Mesa to use libc5. 51libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems. 52 53Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following 54info: 55 56> I only know what works on a RedHat 5.0 distribution. RH5 includes 57> a full set of libraries for both libc5 and glibc. The loader ld.so 58> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs 59> linked against libc5 while it uses the glibc libraries in /lib and 60> /usr/lib for programs linked against glibc. 61> 62> Anyway I changed line 41 of mklib.glide to 63> GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib" 64> 65> And I started quake2 up with a script like this 66> #!/bin/csh 67> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib 68> setenv MESA_GLX_FX f 69> ./quake2 +set vid_ref gl 70> kbd_mode -a 71> reset 72 73 74I've already patched the mklib.glide file. You'll have to start Quake 75with the script shown above though. 76 77 78 79********************** 80 81Daryll Strauss writes: 82 83Here's my thoughts on the problem. On a RH 5.x system, you can NOT build 84a libc5 executable or library. Red Hat just doesn't include the right 85stuff to do it. 86 87Since Quake is a libc5 based application, you are in trouble. You need 88libc5 libraries. 89 90What can you do about it? Well there's a package called gcc5 that does 91MOST of the right stuff to compile with libc5. (It brings back older 92header files, makes appropriate symbolic links for libraries, and sets 93up the compiler to use the correct directories) You can find gcc5 here: 94ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm 95 96No, this isn't quite enough. There are still a few tricks to getting 97Mesa to compile as a libc5 application. First you have to make sure that 98every compile uses gcc5 instead of gcc. Second, in some cases the link 99line actually lists -L/usr/lib which breaks gcc5 (because it forces you 100to use the glibc version of things) 101 102If you get all the stuff correctly compiled with gcc5 it should work. 103I've run Mesa 3.0B6 and its demos in a window with my Rush on a Red Hat 1045.1 system. It is a big hassle, but it can be done. I've only made Quake 105segfault, but I think that's from my libRush using the wrong libc. 106 107Yes, mixing libc5 and glibc is a major pain. I've been working to get 108all my libraries compiling correctly with this setup. Someone should 109make an RPM out of it and feed changes back to Brian once they get it 110all working. If no one else has done so by the time I get the rest of my 111stuff straightened out, I'll try to do it myself. 112 113 - |Daryll 114 115 116 117********************* 118 119David Bucciarelli (tech.hmw@plus.it) writes: 120 121I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is 122working fine for me. I had only to make a small change to the 123Mesa-3.0/mklib.glide file, from: 124 125 126 GLIDELIBS="-L/usr/local/glide/lib -lglide2x 127-L/usr/i486-linux-libc5/lib -lm" 128 129to: 130 131 GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x" 132 133and to make two symbolic links: 134 135[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2 136[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2 137 138I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it 139includes also the Glide for the libc5). I'm not using the /dev/3Dfx and 140running QuakeII as root with the following env. var: 141 142export 143LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib 144 145I think that all problems are related to the glibc, Quake will never 146work if you get the following output: 147 148[david@localhost Mesa]$ ldd lib/libMesaGL.so 149 libglide2x.so => /usr/lib/libglide2x.so (0x400f8000) 150 libm.so.6 => /lib/libm.so.6 (0x40244000) 151 libc.so.6 => /lib/libc.so.6 (0x4025d000) 152 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000) 153 154You must get the following outputs: 155 156[david@localhost Mesa]# ldd lib/libMesaGL.so 157 libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so 158(0x400f3000) 159 160[root@localhost quake2]# ldd quake2 161 libdl.so.1 => /lib/libdl.so.1 (0x40005000) 162 libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000) 163 libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000) 164 165[root@localhost quake2]# ldd ref_gl.so 166 libMesaGL.so.2 => 167/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000) 168 libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so 169(0x401d9000) 170 libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6 171(0x40324000) 172 libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6 173(0x403b7000) 174 libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1 175(0x403c1000) 176 libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000) 177 libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000) 178 179 180*********************** 181 182Steve Davies (steve@one47.demon.co.uk) writes: 183 184 185Try using: 186 187 export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib 188 ./quake2 +set vid_ref gl 189 190to start the game... Works for me, but assumes that you have the 191compatability libc5 RPMs installed. 192 193 194*************************** 195 196WWW resources - you may find additional Linux Quake help at these URLs: 197 198 199http://quake.medina.net/howto 200 201http://webpages.mr.net/bobz 202 203http://www.linuxgames.com/quake2/ 204 205 206 207---------------------------------------------------------------------- 208