On Mon, 1 Mar 1999, Alexei Toumantsev wrote:
> I didn't use dosemu for a while, now i need it again.
> As the web page is under reconstruction i decided to ask
> it here: has anyone succesfully compiled dosemu under 2.2.x
> kernel and which version i'm supposed to use?
There are things you shouldn't mix while unstanding:
- The binary interface to vm86 in the kernel is identical
for 2.0 and 2.2.
- When DOSEMU interfaces directly to kernel syscalls, it uses
those which have identical interface in 2.0 and 2.2
- There are kernel headerfiles who have different data structure
and bit definitions in 2.0 and 2.2. Furthermore, the kernel
may use different data structure itself while expecting standard
data structures in userland. Some of those are protected by the
__KERNEL__ define, but not all of them. It depends on the libc
distribution of your system how it deals whith kernel headerfiles
in order to compile a working DOSEMU.
- Though there are a lot of distributions out who come with a
'socalled' glibc2, they are _not_ identical. Those versions mostly are
based on the glibc-2.0.7pre6. However, due to tons of bugs and missing
compatibility slots, the distributors were forced to patch them havily
and they, unfortunately, did not sit down together to negociate
a set of common patches :-(
In addition there is glibc-2.1, but this one too is a big family with
lot of 'children' born on a dayly bases ;-)
- Last not least, there are different compilers in use: gcc-2.7.2.x,
gcc-2.8.x, egcs-1.0.x, egcs-1.1.x, ... and even here it may depend
on the release date of the compiler wether it compiles dosemu
right or not.
As it currently is, there are big differences between the libc5 and
the divers glibc (libc6) versions out on the 'market' and unfortunately
you can't tell which one is the 'standard'. This situation is _very_
ugly and makes it impossible for us to verify compilation on all
those libcs. As a rule of thumb:
- If your system has /usr/include/{linux,asm} symlink'ed to
the kernel source tree, then in case of trouble just
symlink to a 2.0 kernel header tree. The resuling DOSEMU binary
will then run on both, 2.0 and 2.2 kernel.
- If your system contains (edited) _copies_ of the kernel headers, it
will be a lot more difficult to find out why dosemu doesn't compile.
As a result of the above described odds, DOSEMU's binary release is still
compiled and linked statically on a libc5 system using gcc-2.7.2.x.
This will be the reference until the libc/compiler people finaly found
a way to except each other and make the world happy with a _really_
working and (backward) compatible standard.
Hans
<[EMAIL PROTECTED]>