Xymon Mailing List Archive search

problem compiling HP-UX 11.11 using gcc

list Henrik Størner
Mon, 26 Jun 2006 22:49:36 +0200
Message-Id: <user-7fb378982ca4@xymon.invalid>

On Mon, Jun 26, 2006 at 11:23:13AM -0700, Mike Arnold wrote:
user-ec8e46bcfbb3@xymon.invalid wrote:
Have you tried 4.1.1 from this site?

http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,7663,00.html
I have gcc 4.0.3 32-bit, 4.1.1 32 and 64-bit from HP, and 4.1.0 from PaAC.
 All give the same errors.

I'm thinking that there must be something different about our build
environments, as other people have indicated that they are able to compile
just fine.
I've managed to find out that this breakage is because the HP-UX
include-files do not define the RPC functions and structures if
the pre-processer symbol _XOPEN_SOURCE_EXTENDED is defined. 

This despite the on-line documentation in "man getrpcent" stating
that this function *is* available, if you just include the <netdb.h>
file in your program. Which Hobbit does ...

Now ... why that is so, you'll have to ask HP. I'm prone to consider it
a bug in their include-files, and looking at the contortions they go
through with defining/undefining various things it seems that this may
not be what they intended to do. Just #undef'ing this at the top of
bbtest-net.c causes some other breakage with sys/socket.h disagreeing
with itself about how to define the "sendfile" and "sendpath" functions:

/usr/include/sys/socket.h:504: error: static declaration of 'sendfile' follows non-static declaration
/usr/include/sys/socket.h:484: error: previous declaration of 'sendfile' was here
/usr/include/sys/socket.h:505: error: static declaration of 'sendpath' follows non-static declaration
/usr/include/sys/socket.h:486: error: previous declaration of 'sendpath' was here


For now, the fastest work-around is probably to add this to bbtest-net.c
around line 32 (after the HAVE_RPCENT_H part):

struct rpcent {
	char    *r_name;        /* name of server for this rpc program */
	char    **r_aliases;    /* alias list */
	int     r_number;       /* rpc program number */
};
extern struct rpcent *getrpcbyname(char *);

With that added, Hobbit builds just fine.


Regards,
Henrik