2016-05-11 2 views
0

J'essaye de mettre à jour GCC sur une machine particulière de Linux que j'ai, à une version pour laquelle aucun paquet n'est disponible.Mise à jour de GCC - version de GMP causant des problèmes

je lance le script de configuration et il se plaint de la version de GMP:

# ../gcc/configure 
checking build system type... i686-pc-linux-gnu 
[snip] 
checking for the correct version of gmp.h... no 
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+. 
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify 
their locations. Source code for these libraries can be found at 
their respective hosting sites as well as at 
ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also 
http://gcc.gnu.org/install/prerequisites.html for additional info. If 
you obtained GMP, MPFR and/or MPC from a vendor distribution package, 
make sure that you have installed both the libraries and the header 
files. They may be located in separate packages. 

Cependant, quand je vérifie gmp.h il montre:

/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ 
#define __GNU_MP_VERSION 4 
#define __GNU_MP_VERSION_MINOR 2 
#define __GNU_MP_VERSION_PATCHLEVEL 1 

et rapports RPM suivants:

# rpm -q --qf "%{VERSION}\n" gmp 
4.2.1 
# rpm -q --qf "%{VERSION}\n" gmp-devel 
4.2.1 

donc la bibliothèque et les en-têtes semblent être d'une version correcte pour moi (ce qui porte à confusion la numérotation o f le fichier .so pour libgmp semble avoir exactement rien à voir avec le numéro de version ... qui montre que

libgmp.so -> libgmp.so.3.4.1 

Est-ce que quelqu'un sait pourquoi cela pourrait être un échec? Ce sont les deux seuls paquets gmp installés sur cette machine et ils sont dans les emplacements standards/usr/include et/usr/lib, donc ils devraient déjà être sur le chemin de recherche.

+0

Il serait plus simple si vous remplaciez "une machine", "une version", etc. par des informations réelles ... Non, les nombres dans libsmurf.X.Y.Z ne sont pas censés avoir de relation avec la version du paquet. Vous devriez vérifier config.log. Le message d'erreur est le même si la compilation échoue pour une raison quelconque ou si la version est incorrecte. –

Répondre

0

Il s'avère que "Building GCC requires GMP 4.2+" est insuffisamment détaillé. Creuser dans configure, il est en fait vérifier:

#if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,2,3) 
    choke me 
    #endif 

à savoir GMP 4,2 0,3 ou plus, donc mon 4.2.1 n'a pas été le couper.

0

S'il vous plaît lire Installing GCC:

La façon difficile, qui n'est pas recommandé, est de télécharger les sources de GMP, MPFR et MPC, puis configurer et installer chacun d'entre eux dans des endroits non standard, puis configurez GCC avec --with-gmp =/un/silly/chemin/gmp --with-mpfr =/un/silly/chemin/mpfr --with-mpc =/un/silly/chemin/mpc, alors être forcé de mettre LD_LIBRARY_PATH =/un/silly/chemin/gmp:/un/silly/chemin/mpfr:/un/silly/chemin/mpc/lib dans votre environnement pour toujours. C'est stupide et cause des problèmes majeurs pour quiconque ne comprend pas comment les liens dynamiques trouvent des bibliothèques à l'exécution. Ne faites pas cela. Si la construction de GCC échoue lorsque vous utilisez l'une des options --with-gmp ou --with-mpfr ou --with-mpc, vous ne devriez probablement pas les utiliser.

Exécutez simplement ./contrib/download_prerequisites et économisez beaucoup de temps et de douleur.

+0

Je ne peux pas exécuter download_prerequisites sur cette machine car elle n'est pas connectée. J'ai regardé la page Installation de GCC, elle dit 'Pour les systèmes basés sur RPM, y compris Fedora et SUSE, vous devez installer les paquets gmp-devel, mpfr-devel et libmpc-devel (ou mpc-devel sur SUSE). Les paquets installeront les bibliothèques et les en-têtes dans les répertoires système standard afin qu'ils puissent être trouvés automatiquement lors de la construction de GCC', ce qui, je pense, s'applique à ma situation et donc je n'aurais pas besoin de la "voie difficile". Seulement, apparemment, il ne reprend pas correctement la version de gmp. – jam