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