Re: [ROOT] Beginner - difficulty compiling root (3.10.02) on debian

From: Boris Barbour (barbour@ens.fr)
Date: Thu Jan 22 2004 - 02:30:15 MET


Thank you all for your suggestions. However, none of the combinations of 
./configure and make with various options or re-extracting the source has so 
far solved the problem. 

[Jiri Masik - thanks for going to the trouble of trying to reproduce my 
problem]
> the warnings with cdefs.h and compiler.h should disappear with newer
> kernel-header package. I have a recent version and it fixes this bug
> (see the changelog).

I upgraded my system, from testing, and the warnings have indeed disappeared.

> I cannot reproduce the error in rootd.cxx even if I invoke configure
> as you did. You can find several posts on the topic of missing
> prototypes of setresuid/setresgid in the roottalk archive however this
> should not happen with recent Root and Debian versions. 

I don't think they are missing (see below).

> I suggest you
> to try
>
> make distclean

(produces some confusing messages, possibly errors, so I did make clean also)

> ./configure linuxdeb2

./configure linuxdeb (else make produces egcc: command not found)

> check whether include/config.h defines #define HAS_SETRESUID
It does:
#define HAS_SETRESUID  /**/

and this seems correct, since in /usr/include/unistd.h I find

#ifdef __USE_GNU
/* Fetch the effective user ID, real user ID, and saved-set user ID,
   of the calling process.  */
extern int getresuid (__uid_t *__euid, __uid_t *__ruid, __uid_t *__suid);

/* Fetch the effective group ID, real group ID, and saved-set group ID,
   of the calling process.  */
extern int getresgid (__gid_t *__egid, __gid_t *__rgid, __gid_t *__sgid);

/* Set the effective user ID, real user ID, and saved-set user ID,
   of the calling process to EUID, RUID, and SUID, respectively.  */
extern int setresuid (__uid_t __euid, __uid_t __ruid, __uid_t __suid);

/* Set the effective group ID, real group ID, and saved-set group ID,
   of the calling process to EGID, RGID, and SGID, respectively.  */
extern int setresgid (__gid_t __egid, __gid_t __rgid, __gid_t __sgid);
#endif

> run make again

The process starts with a series of messages about missing *.d files, like the 
following:

Makefile:307: clib/src/mrealloc.d: No such file or directory

but continues. It stops, always, at this point:

...
rootd/src/rootd.cxx: In function `void RootdAuthCleanup(const char *, int)':
rootd/src/rootd.cxx:460: implicit declaration of function `int setresgid(...)'
rootd/src/rootd.cxx:463: implicit declaration of function `int setresuid(...)'
make: *** [rootd/src/rootd.o] Error 1

If it's of any help, here is the version information about gcc and make after 
the upgrade.

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.2/specs
Configured with: ../src/configure -v --enable-languages=c,c+
+,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 
--enable-shared --with-system-zlib --enable-nls --without-included-gettext 
--enable-__cxa_atexit --enable-clocale=gnu --enable-debug 
--enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
Thread model: posix
gcc version 3.3.2 (Debian)

$make -v
GNU Make 3.80


Boris

-- 
Boris Barbour

Laboratoire de Neurobiologie (CNRS UMR 8544)
Ecole Normale Superieure
46 rue d'Ulm
75230 Paris Cedex 05
France

tel: +33 1 44 32 37 36
fax: +33 1 44 32 38 87



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET