forked from KolibriOS/kolibrios
208 lines
6.5 KiB
Plaintext
208 lines
6.5 KiB
Plaintext
|
|
||
|
Info on using Mesa 3.0 with Linux Quake I and Quake II
|
||
|
|
||
|
|
||
|
|
||
|
Disclaimer
|
||
|
----------
|
||
|
|
||
|
I am _not_ a Quake expert by any means. I pretty much only run it to
|
||
|
test Mesa. There have been a lot of questions about Linux Quake and
|
||
|
Mesa so I'm trying to provide some useful info here. If this file
|
||
|
doesn't help you then you should look elsewhere for help. The Mesa
|
||
|
mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
|
||
|
might be good.
|
||
|
|
||
|
Again, all the information I have is in this file. Please don't email
|
||
|
me with questions.
|
||
|
|
||
|
If you have information to contribute to this file please send it to
|
||
|
me at brianp@elastic.avid.com
|
||
|
|
||
|
|
||
|
|
||
|
Linux Quake
|
||
|
-----------
|
||
|
|
||
|
You can get Linux Quake from http://www.idsoftware.com/
|
||
|
|
||
|
Quake I and II for Linux were tested with, and include, Mesa 2.6. You
|
||
|
shouldn't have too many problems if you simply follow the instructions
|
||
|
in the Quake distribution.
|
||
|
|
||
|
|
||
|
|
||
|
RedHat 5.0 Linux problems
|
||
|
-------------------------
|
||
|
|
||
|
RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
|
||
|
previous RedHat and other Linux distributions use "libc5" for its
|
||
|
runtime C library.
|
||
|
|
||
|
Linux Quake I and II were compiled for libc5. If you compile Mesa
|
||
|
on a RedHat 5.x system the resulting libMesaGL.so file will not work
|
||
|
with Linux Quake because of the different C runtime libraries.
|
||
|
The symptom of this is a segmentation fault soon after starting Quake.
|
||
|
|
||
|
If you want to use a newer version of Mesa (like 3.x) with Quake on
|
||
|
RedHat 5.x then read on.
|
||
|
|
||
|
The solution to the C library problem is to force Mesa to use libc5.
|
||
|
libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
|
||
|
|
||
|
Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
|
||
|
info:
|
||
|
|
||
|
> I only know what works on a RedHat 5.0 distribution. RH5 includes
|
||
|
> a full set of libraries for both libc5 and glibc. The loader ld.so
|
||
|
> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
|
||
|
> linked against libc5 while it uses the glibc libraries in /lib and
|
||
|
> /usr/lib for programs linked against glibc.
|
||
|
>
|
||
|
> Anyway I changed line 41 of mklib.glide to
|
||
|
> GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
|
||
|
>
|
||
|
> And I started quake2 up with a script like this
|
||
|
> #!/bin/csh
|
||
|
> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
|
||
|
> setenv MESA_GLX_FX f
|
||
|
> ./quake2 +set vid_ref gl
|
||
|
> kbd_mode -a
|
||
|
> reset
|
||
|
|
||
|
|
||
|
I've already patched the mklib.glide file. You'll have to start Quake
|
||
|
with the script shown above though.
|
||
|
|
||
|
|
||
|
|
||
|
**********************
|
||
|
|
||
|
Daryll Strauss writes:
|
||
|
|
||
|
Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
|
||
|
a libc5 executable or library. Red Hat just doesn't include the right
|
||
|
stuff to do it.
|
||
|
|
||
|
Since Quake is a libc5 based application, you are in trouble. You need
|
||
|
libc5 libraries.
|
||
|
|
||
|
What can you do about it? Well there's a package called gcc5 that does
|
||
|
MOST of the right stuff to compile with libc5. (It brings back older
|
||
|
header files, makes appropriate symbolic links for libraries, and sets
|
||
|
up the compiler to use the correct directories) You can find gcc5 here:
|
||
|
ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
|
||
|
|
||
|
No, this isn't quite enough. There are still a few tricks to getting
|
||
|
Mesa to compile as a libc5 application. First you have to make sure that
|
||
|
every compile uses gcc5 instead of gcc. Second, in some cases the link
|
||
|
line actually lists -L/usr/lib which breaks gcc5 (because it forces you
|
||
|
to use the glibc version of things)
|
||
|
|
||
|
If you get all the stuff correctly compiled with gcc5 it should work.
|
||
|
I've run Mesa 3.0B6 and its demos in a window with my Rush on a Red Hat
|
||
|
5.1 system. It is a big hassle, but it can be done. I've only made Quake
|
||
|
segfault, but I think that's from my libRush using the wrong libc.
|
||
|
|
||
|
Yes, mixing libc5 and glibc is a major pain. I've been working to get
|
||
|
all my libraries compiling correctly with this setup. Someone should
|
||
|
make an RPM out of it and feed changes back to Brian once they get it
|
||
|
all working. If no one else has done so by the time I get the rest of my
|
||
|
stuff straightened out, I'll try to do it myself.
|
||
|
|
||
|
- |Daryll
|
||
|
|
||
|
|
||
|
|
||
|
*********************
|
||
|
|
||
|
David Bucciarelli (tech.hmw@plus.it) writes:
|
||
|
|
||
|
I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
|
||
|
working fine for me. I had only to make a small change to the
|
||
|
Mesa-3.0/mklib.glide file, from:
|
||
|
|
||
|
|
||
|
GLIDELIBS="-L/usr/local/glide/lib -lglide2x
|
||
|
-L/usr/i486-linux-libc5/lib -lm"
|
||
|
|
||
|
to:
|
||
|
|
||
|
GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
|
||
|
|
||
|
and to make two symbolic links:
|
||
|
|
||
|
[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
|
||
|
[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
|
||
|
|
||
|
I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
|
||
|
includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
|
||
|
running QuakeII as root with the following env. var:
|
||
|
|
||
|
export
|
||
|
LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
|
||
|
|
||
|
I think that all problems are related to the glibc, Quake will never
|
||
|
work if you get the following output:
|
||
|
|
||
|
[david@localhost Mesa]$ ldd lib/libMesaGL.so
|
||
|
libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
|
||
|
libm.so.6 => /lib/libm.so.6 (0x40244000)
|
||
|
libc.so.6 => /lib/libc.so.6 (0x4025d000)
|
||
|
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
|
||
|
|
||
|
You must get the following outputs:
|
||
|
|
||
|
[david@localhost Mesa]# ldd lib/libMesaGL.so
|
||
|
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||
|
(0x400f3000)
|
||
|
|
||
|
[root@localhost quake2]# ldd quake2
|
||
|
libdl.so.1 => /lib/libdl.so.1 (0x40005000)
|
||
|
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
|
||
|
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
|
||
|
|
||
|
[root@localhost quake2]# ldd ref_gl.so
|
||
|
libMesaGL.so.2 =>
|
||
|
/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
|
||
|
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||
|
(0x401d9000)
|
||
|
libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
|
||
|
(0x40324000)
|
||
|
libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
|
||
|
(0x403b7000)
|
||
|
libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
|
||
|
(0x403c1000)
|
||
|
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
|
||
|
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
|
||
|
|
||
|
|
||
|
***********************
|
||
|
|
||
|
Steve Davies (steve@one47.demon.co.uk) writes:
|
||
|
|
||
|
|
||
|
Try using:
|
||
|
|
||
|
export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
|
||
|
./quake2 +set vid_ref gl
|
||
|
|
||
|
to start the game... Works for me, but assumes that you have the
|
||
|
compatability libc5 RPMs installed.
|
||
|
|
||
|
|
||
|
***************************
|
||
|
|
||
|
WWW resources - you may find additional Linux Quake help at these URLs:
|
||
|
|
||
|
|
||
|
http://quake.medina.net/howto
|
||
|
|
||
|
http://webpages.mr.net/bobz
|
||
|
|
||
|
http://www.linuxgames.com/quake2/
|
||
|
|
||
|
|
||
|
|
||
|
----------------------------------------------------------------------
|