[RedHat] MySQL make

Pagina: 1
Acties:

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Nadat ik make heb gedaan voor mysql 3.22.29 krijg ik aan het eind de volgende melding:

mkdir .libs
g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -rdynamic -o .libs/mysql mysql.o readline.o sql_string.o completion_hash.o ../readline/libreadline.a -lncurses ../libmysql/.libs/libmysqlclient.so -lz -lcrypt -lnsl -lm -lz -lcrypt -lnsl -lm -Wl,--rpath -Wl,/usr/local/lib/mysql
mysql.o(.text+0x189c): In function `com_source(String*, char*)':
: undefined reference to `errno'
collect2: ld returned 1 exit status
make[2]: *** [mysql] Error 1
make[2]: Leaving directory `/usr/src/mysql-3.23.53/client'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/mysql-3.23.53'
make: *** [all-recursive-am] Error 2

Kan ik hieruit concluderen dat het niet helemaal goed is gegaan, of kan ik gewoon lekker verder gaan :P
En wat moet ik veranderen om hem toch te laten werken.

Dit heb ik gedaan:

tar xvzf mysql-3.22.29.tar.gz
cd mysql-3.22.29
./configure --with-libwrap --enable-thread-safe-client --enable-assembler
make

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:13
Concluderen dat er iets verkeerd is gegaan; dat is vaak de betekenis van het woord 'error', nietwaar?

Het lijkt er op dat een library niet is meegelinkt. Apart genoeg is het de variabele 'errno' die niet wordt gevonden. Dat is heel raar, omdat die in de 'standaard' C library zit (dacht ik), en die wordt altijd meegelinkt, daar hoef je iig niets voor te doen. Dus ik snap niet echt hoe het kan. Zoek eens met google of er meer mensen zijn geweest die dit probleem hadden?

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Op de een of andere manier gaat het met Linux nooit in 1 keer goed... Had eerder ook al een wazige error met Apache en PHP :(
If you are on redhat 9.0 you probably have seen this many times when trying to compile various applications such as mysql or qmail. The compiler blows a gasket saying 'undefined reference to `errno'' This is caused by the compiler not picking up the errno.h header file as it does on other platforms. The solution is trivial. Just replace all occurances of

extern int errno;

with

#include <errno.h>

The best place to look for this is in error.h in the source tree. If it's not there you can always rely on grep to do the trick.

grep 'errno' *.h -r
Ik kan nu niet achter de linux bak, maar ik denk dat het zo wel gaat lukken :) In error.h "extern int errno;" vervangen met "#include <errno.h>". Moet niet al te moeilijk zijn.

[ Voor 137% gewijzigd door Fles op 19-08-2003 22:46 ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 20-04 22:06

igmar

ISO20022

Graveheart schreef op 19 August 2003 @ 21:33:
Ik kan nu niet achter de linux bak, maar ik denk dat het zo wel gaat lukken :) In error.h "extern int errno;" vervangen met "#include <errno.h>". Moet niet al te moeilijk zijn.
En zorg dat er -D_REENTRANT is gedefinieerd, anders is de client NIET thread-safe.

  • igmar
  • Registratie: April 2000
  • Laatst online: 20-04 22:06

igmar

ISO20022

Wilke schreef op 19 augustus 2003 @ 20:07:

Het lijkt er op dat een library niet is meegelinkt. Apart genoeg is het de variabele 'errno' die niet wordt gevonden. Dat is heel raar, omdat die in de 'standaard' C library zit (dacht ik), en die wordt altijd meegelinkt, daar hoef je iig niets voor te doen. Dus ik snap niet echt hoe het kan. Zoek eens met google of er meer mensen zijn geweest die dit probleem hadden?
Bij een thread-safe client is de errno variable per thread. Dat doen ze door als _REENTRANT is defineerd errno te vervangen door het aanroepen van een functie, die de waarde uit de threaddata vist.

Indien dus _REENTRANT niet is definieerd, en een gedeelte van de code wel met _REENTRANT is definieerd krijg je een linker error omdat errno nergens bestaat. errno.h dus included, en _REENTRANT definieeren.

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
En die _REENTRANT vind ik ook in error.h?

En waar vind ik error.h als ze die in /usr/include bedoelen kan ik errno er niet in vinden. Heb al gekeken met grep maar hij staat er echt niet in :(

Hij staat wel in errno.h en in zutil.h.

[ Voor 76% gewijzigd door Fles op 20-08-2003 10:51 ]

Pagina: 1