[MPlayer-users] What Have I Done???
Reimar Döffinger
Reimar.Doeffinger at stud.uni-karlsruhe.de
Sat Apr 28 11:19:35 CEST 2007
Hello,
On Sat, Apr 28, 2007 at 01:48:02AM -0700, CD Baric wrote:
> I have linked the /usr/include/linux directory to
> /usr/src/linux-2.6.20.7/include/linux directory.
These are not configured and will almost never work. Even when
configured they are problematic.
> ---
> ldt_keeper.c
> ldt_keeper.c: In function `Setup_LDT_Keeper':
> ldt_keeper.c:194: error: storage size of 'array' isn't known
> ldt_keeper.c:226: error: invalid application of `sizeof' to incomplete
> type `user_desc'
> make[1]: *** [ldt_keeper.o] Error 1
> make[1]: Leaving directory `/usr/src/mplayer-checkout-2007-04-28/loader'
> make: *** [loader/libloader.a] Error 2
> ---
>
> Keep in mind that this particular Slackware installation is filled
> with additional libraries required for numerous high-end applications
> like audacity, rosegarden, dvdstyler, blender etc...
This really is only a problem with your linux headers.
The /usr/include/asm/ldt.h does not define user_desc properly.
This is my /usr/include/asm/ldt.h:
> /* Autogenerated by create_ml_includes() in multilib.eclass */
>
> #ifdef __i386__
> # include <asm-i386/ldt.h>
> #endif /* __i386__ */
>
> #ifdef __x86_64__
> # include <asm-x86_64/ldt.h>
> #endif /* __x86_64__ */
So this just includes e.g. asm-i386/ldt.h
I would assume that your problem lies here, since this file either needs
to be specially created by your distro (as here gentoo does) or asm
needs to be a link to e.g. asm-i386 (which is what the kernel does, but
that is not right in this case since on AMD64 systems you can build both
32 and 64 bit binaries, so a link would always be wrong for at least one
of these cases).
And for reference, this is my /usr/include/asm-i386/ldt.h:
> #define _LINUX_LDT_H
>
> /* Maximum number of LDT entries supported. */
> #define LDT_ENTRIES 8192
> /* The size of each LDT entry. */
> #define LDT_ENTRY_SIZE 8
>
> #ifndef __ASSEMBLY__
> struct user_desc {
> unsigned int entry_number;
> unsigned long base_addr;
> unsigned int limit;
> unsigned int seg_32bit:1;
> unsigned int contents:2;
> unsigned int read_exec_only:1;
> unsigned int limit_in_pages:1;
> unsigned int seg_not_present:1;
> unsigned int useable:1;
> };
>
> #define MODIFY_LDT_CONTENTS_DATA 0
> #define MODIFY_LDT_CONTENTS_STACK 1
> #define MODIFY_LDT_CONTENTS_CODE 2
>
> #endif /* !__ASSEMBLY__ */
> #endif
[...]
> I suspect I have borked some library installation and caused the
> problem and was hoping somebody could advise me where to start
> looking BUT I do not espect miracles.
I suspect your distro has borked the linux headers they ship in
/usr/include, they do that all the time, you're lucky when the answer to
a complaint isn't just "you aren't supposed to use them anyway".
You could try changing the
> #include <asm/ldt.h>
in loader/ldt_keeper.c to
> #include <asm-i386/ldt.h>
Greetings,
Reimar Döffinger
More information about the MPlayer-users
mailing list