Hope everyone's having fun at LinuxWorld.

I couldn't find any discussion of a solution for this (according
to Google, mysql.com search), other than at least a dozen reports
from people having trouble with it.  The bug is that the proper error
is not reported and at least I was sent on a wild goose chase.

In attempting to build MySQL 3.23.54a on a fresh Red Hat 8.0:

libmysql.c: In function `mysql_real_connect':
libmysql.c:1325: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer 
type
libmysql.c:1325: too few arguments to function `gethostbyname_r'
libmysql.c:1325: warning: assignment makes pointer from integer without a cast

Very odd.  What ends up being generated in include/my_net.h is:

    #define my_gethostbyname_r(A,B,C,D,E) gethostbyname_r((A),(B),(C),(D),

When it should be generating:

    struct hostent *my_gethostbyname_r(const char *name,struct hostent
            *result, char *buffer,int buflen, int *h_errnop);

It does not get generated because ./configure does not detect GLIBC2's
gethostbyname_r() even though it is there, and it is the six argument
version that ends up being called with five.

The problem actually has nothing to do with gethostbyname_r().

The problem is that g++ is not installed.  The configure test program
for gethostbyname_r() type depends on a C++ compiler, and ./configure is
not halting the process for lack of C++ compiler:

configure:19299: checking style of gethostname_r routines
configure:19347: g++ -c -O -DDBUG_OFF    conftest.cc >&5
./configure: line 1: g++: command not found
configure:19350: $? = 127
configure: failed program was:
#line 19316 "configure"
#include "confdefs.h"
#undef inline
#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT)
#define _REENTRANT
#endif
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int skr;

 skr = gethostbyname_r((const char *) 0,
  (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);
  ;
  return 0;
}

Solution?  Tell the user there is no C++ compiler if there is no C++ compiler.

-- 
Michael Bacarella                  24/7 phone: 646 641-8662
Netgraft Corporation                   http://netgraft.com/
      "unique technologies to empower your business"

Finger email address for public key.  Key fingerprint:
  C40C CB1E D2F6 7628 6308  F554 7A68 A5CF 0BD8 C055

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to