Forums, scripts, cours, services pour webmaster, manuels (PHP, MySQL, HTML...) en français !
PHP / MySql
Recherche
 
ManuelPHP.com
Installer à partir de l'arbre source de développement
<<<
Problèmes de compilation? Notes relatives aux MIT-pthreads
>>>

2.3 Installer MySQL à partir des sources
2 Installation de MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Vue d'ensemble de l'installation rapide
Appliquer des patches
Options habituelles de configure
Installer à partir de l'arbre source de développement
->Problèmes de compilation?
Notes relatives aux MIT-pthreads
La distribution source Windows

2.3.5 Problèmes de compilation?

Tous les programmes MySQL compilent proprement chez nous, sans aucune alerte sur Solaris avec gcc . Sur d'autres systèmes, des alertes peuvent apparaître à cause de différences dans le système d'inclusions. Voyez Remarques sur MIT-pthreads pour les alertes qui peuvent apparaître avec MIT-pthreads. Pour d'autres problèmes, voyez la liste suivante.

La solution à de nombreux problèmes implique une reconfiguration. Si vous avez besoin de faire une reconfiguration voici quelques conseils généraux :
  • Si configure est exécuté après une première exécution, il peut utiliser des informations qui ont été rassemblées durant une première invocation. Ces informations sont stockées dans le fichier config.cache . Lorsque configure est lancé, il commence par regarder dans ce fichier, et lire le contenu qui existe, en supposant que ces données sont toujours correctes. Cette supposition est invalide si vous faîtes une reconfiguration.
  • Chaque fois que vous exécutez configure , vous devez exécuter à nouveau make pour recompiler. Toutefois, vous devrez peut être supprimer les vieux fichiers d'objets qui ont été compilé en utilisant différentes configurations précédentes.
Pour éviter d'utiliser de vieilles informations de configuration, ou des vieux fichiers d'objet, vous pouvez utiliser ces commandes, avant configure :

shell> rm config.cache
shell> make clean
Alternativement, vous pouvez aussi utiliser make distclean .La liste suivante décrit certains problèmes lors de la compilation de MySQL, qui surviennent souvent :
  • Si vous avez des problèmes lors de la compilation de sql_yacc.cc , comme ceux qui sont décrits ci-dessous, vous avez probablement été à court de mémoire ou d'espace de swap :
    
    Internal compiler error: program cc1plus got fatal signal 11
      ou
    Out of virtual memory
      ou
    Virtual memory exhausted
    Le problème est que gcc requiert de grandes quantité de mémoire pour compiler sql_yacc.cc avec les fonctions inline. Essayez d'exécuter configure avec l'option --with-low-memory :
    
    shell> ./configure --with-low-memory
    
    Cette option ajoute -fno-inline dans la ligne de compilation, si vous utilisez gcc et -O0 si vous utilisez autre chose. Vous pouvez essayer --with-low-memory même si il vous reste suffisamment de mémoire, et que vous ne pensez pas être limité. Ce problème a été observé sur des systèmes avec de généreuses configurations, et --with-low-memory résout ce problème.
  • Par défaut, configure choisit c++ comme compilateur, et GNU c++ pour les liens avec -lg++ . Si vous utilisez gcc , ce comportement peut poser les problèmes suivants :
    
    configure: error: installation or configuration problem:
    C++ compiler cannot create executables.
    Vous pourriez aussi observer des problèmes durant la compilation, avec g++ , libg++ ou libstdc++ .La cause de ces problèmes est que vous avez peut être que vous n'avez pas g++ , ou que vous avez g++ mais pas libg++ , ou libstdc++ . Regardez le fichier de log config.log . Il va sûrement contenir la raison exacte du mauvais fonctionnement de votre compilateur. Pour contourner ce problème, vous pouvez utiliser gcc comme compilateur C++. Essayez de modifier la variable d'environnement CXX avec la valeur "gcc -O3" . Par exemple :
    
    shell> CXX="gcc -O3" ./configure
    
    Cela fonctionne car gcc compile les sources C++ aussi bien que g++ , mais il n'est pas lié avec libg++ ou libstdc++ par défaut.Un autre moyen pour régler ces problèmes, bien sur, est d'installer g++ , libg++ et libstdc++ . Nous vous recommandons toutefois de ne pas utiliser libg++ ou libstdc++ avec MySQL car cela ne fera qu'accroître la taille de votre exécutable binaire, sans vous apporter d'avantages. Par le passé, certaines versions de ces librairies ont posé des problèmes étranges aux utilisateurs MySQL.
  • Si votre compilation échoue avec des erreurs, ou si l'une des erreurs suivantes apparaît, vous devez changer la version de make en GNU make :
    
    making all in mit-pthreads
    make: Fatal error in reader: Makefile, line 18:
    Badly formed macro assignment
      ou
    make: file `Makefile' line 18: Must be a separator (:
      ou
    pthread.h: No such file or directory
    Solaris et FreeBSD sont connus pour avoir des problèmes avec make .

    GNU make version 3.75 est reconnu pour fonctionner.

  • Si vous voulez définir des options supplémentaires qui seront utilisées par votre compilateur C ou C++, faites le en ajoutant ces options aux variables d'environnement CFLAGS et CXXFLAGS . Vous pouvez aussi spécifier le nom du compilateur via les variables CC et CXX . Par exemple :
    
    shell> CC=gcc
    shell> CFLAGS=-O3
    shell> CXX=gcc
    shell> CXXFLAGS=-O3
    shell> export CC CFLAGS CXX CXXFLAGS
    Voyez Binaires MySQL compilés par MySQL AB , pour avoir une liste des définitions des options disponibles sur divers systèmes.
  • Si vous obtenez un message d'erreur comme celui-ci, vous devrez mettre à jour votre version de gcc :
    
    client/libmysql.c:273: parse error before `__attribute__'
    
    gcc 2.8.1 est connu pour fonctionner, mais nous recommandons l'utilisation de gcc 2.95.2 ou egcs 1.0.3a.
  • Si vous obtenez des erreurs telles que celles qui sont affichées ci-dessous lors de la compilation de mysqld , c'est que configure n'a pas correctement détecter le dernier argument des fonctions accept() , getsockname() ou getpeername() :
    
    cxx: Error: mysqld.cc, line 645: In this statement, the referenced
         type of the pointer value "&length" is "unsigned long", which
         is not compatible with "int".
    new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
    Pour corriger ce problème, éditez le fichier config.h (qui est généré par le fichier configure ). Recherchez ces lignes :
    
    /* Define as the base type of the last arg to accept */
    #define SOCKET_SIZE_TYPE XXX
    Remplacez XXX par size_t ou int , suivant votre système d'exploitation. Notez que vous devrez faire cette manipulation à chaque fois que vous exécuterez le script configure car configure regénère config.h .
  • Le fichier sql_yacc.cc est généré à partir du fichier sql_yacc.yy . Normalement, le processus de création ne s'occupe pas de sql_yacc.cc , car MySQL en a déjà une copie. Cependant, si vous devez le recréer, vous pouvez rencontrer cette erreur :
    
    "sql_yacc.yy", line xxx fatal: default action causes potential...
    
    Cela indique que votre version de yacc est inadéquate. Vous devrez probablement réinstaller bison (la version GNU de yacc ) et l'utiliser à la place.
  • Si vous avez besoin de déboguer mysqld ou un client MySQL, exécutez le script configure avec l'option --with-debug , puis recompilez vos clients avec la nouvelle librairie. Déboguer un client MySQL .

<< Problèmes de compilation? >>
Installer à partir de l'arbre source de développement Installer MySQL à partir des sources Notes relatives aux MIT-pthreads





Google

Services webmasters

Les manuels
 

ManuelPHP.com © 2003-2012 Tigersun - Crédits
Webmaster Site Internet - Télécharger des Logiciels - Programme TV - Entraide Informatique - Agence de Communication
2017-06-23