At 08:48 AM 5/31/01 +0200, you wrote:
>On Thu, May 31, 2001 at 01:35:13PM +0800, Derrick wrote:
>> HI,
>> While compiling, i encountered this error when I typed "make" after I 
>> finished "make config"
>> 
>> make[1]: Entering directory `/home/ircadmin/ircu2.10/ircd'
>> gcc -g -O3 -pipe -I../include -I../config -c userload.c -o userload.o
>> userload.c: In function `update_load':
>> userload.c:60: storage size of `tm_now' isn't known
>> userload.c:60: storage size of `tm_now' isn't known
>> userload.c:100: invalid type argument of `unary *'
>> make[1]: *** [userload.o] Error 1
>> make[1]: Leaving directory `/home/ircadmin/ircu2.10/ircd'
>
>I've come across this several weeks ago, it seems to be a problem with the
>header files of newer glibc versions (not sure about that though). I have
>fixed it by editing userload.c, deleting the line "#include <sys/time.h>"
>and instead using this:

It is in fact trouble with newer glibc versions.

The 2.2.2 and newer glibc versions' header files are designed so that,
unlike earlier versions and many other system libc's, when a header file
needs to reference stuff from another header, it uses #defines so as to
include the minimum possible data from the referenced header.

This is in general a Good Thing, but causes major trouble for programs
which expect a full inclusion of header B from header A on a given
platform. Ircd (all types, not just ircu) is a prime example of such a
program. Possibly even *the* major example, since most of the time, a
glibc upgrade gives me very few problems compiling stuff on a Linux box,
-except- that ircd almost invariably breaks. Ircu is better than others
in such cases, but it still sometimes does break... *sigh*


Reply via email to