Installation sur mandrake

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Installation sur mandrake

Message par magicvinni » jeu. déc. 20, 2007 5:00 pm

Bonjour,

Ci-joint une copie d'un mail de l'administrateur réseau sur lequel il essaie d'installer XCas en ligne....

Le serveur est sous Mandriva Linux Corporate Server release 2006.0 (Official) for x86_64

======================================
Salut,

Je viens de faire de nouveau test en installant mpfr et gsl en source, mais je bloque sur l'installation de giac version
que vous m'avez suggéré sur:
http://www-fourier.ujf-grenoble.fr/~par ... le_fr.html
(j'ai pris la dernière version dite "instable")

voici un extrait de l'erreur:

/bin/sh ../libtool --mode=link g++ -g -O2 -o libgiac.la -rpath /usr/local/lib sym2poly.lo gausspol.lo threaded.lo moyal.lo maple.lo ti89.lo mathml.lo misc.lo permu.lo quater.lo desolve.lo input_parser.lo symbolic.lo index.lo modpoly.lo modfactor.lo ezgcd.lo derive.lo solve.lo intg.lo intgab.lo risch.lo lin.lo series.lo subst.lo vecteur.lo csturm.lo tex.lo global.lo ifactor.lo alg_ext.lo gauss.lo isom.lo plot.lo plot3d.lo help.lo rpn.lo prog.lo pari.lo cocoa.lo unary.lo usual.lo identificateur.lo gen.lo input_lexer.lo first.lo TmpLESystemSolver.lo TmpFGLM.lo -fPIC -lmpfr -lpthread -ljpeg -lpng -lz -lgsl -lgslcblas -lncurses -ldl -lm -L/usr/X11R6/lib64 -lX11 -lgmp
rm -fr .libs/libgiac.la .libs/libgiac.* .libs/libgiac.*
gcc -fPIC -shared sym2poly.lo gausspol.lo threaded.lo moyal.lo maple.lo ti89.lo mathml.lo misc.lo permu.lo quater.lo desolve.lo input_parser.lo symbolic.lo index.lo modpoly.lo modfactor.lo ezgcd.lo derive.lo solve.lo intg.lo intgab.lo risch.lo lin.lo series.lo subst.lo vecteur.lo csturm.lo tex.lo global.lo ifactor.lo alg_ext.lo gauss.lo isom.lo plot.lo plot3d.lo help.lo rpn.lo prog.lo pari.lo cocoa.lo unary.lo usual.lo identificateur.lo gen.lo input_lexer.lo first.lo TmpLESystemSolver.lo TmpFGLM.lo -lmpfr -lpthread -ljpeg -lpng -lz -lgsl -lgslcblas -lncurses -ldl -lm -L/usr/X11R6/lib64 -lX11 -lgmp -lc -Wl,-soname -Wl,libgiac.so.0 -o .libs/libgiac.so.0.0.0
/usr/bin/ld: /usr/lib/gcc/x86_64-mandriva-linux-gnu/4.0.1/../../../../lib64/libmpfr.a(add.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-mandriva-linux-gnu/4.0.1/../../../../lib64/libmpfr.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgiac.la] Erreur 1
make[2]: Leaving directory `/root/giac/giac-0.7.2/src'
make[1]: *** [all-recursive] Erreur 1
make[1]: Leaving directory `/root/giac/giac-0.7.2'
make: *** [all-recursive-am] Erreur 2

when making a shared object; recompile with -fPIC, j'ai ajouté dans src/Makefile la prise en compte de l'option -fPIC sans aucun résultat.

je commence à désespéré, je viens de faire un test sur une débian cela fonctionne.

===================
J'espère que vous aurez des idée pour que mon projet puisse aboutir

Merci d'avance

Vincent MAILLE

parisse
Messages : 5141
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » jeu. déc. 20, 2007 6:36 pm

Jean-Pierre Branchard m'a fait suivre ce problème, voici la réponse que je lui ai renvoyée:
d'apres le message d'erreur, c'est la libmpfr qui devrait etre recompilee avec -fPIC (c'est-a-dire qu'en fait il faudrait generer une libmpfr.so et pas seulement une libmpfr.a, peut-etre avec un --enable-shared dans le ./configure)
L'autre solution serait de desactiver le support de MPFR en enlevant le -lmpfr dans le src/Makefile et en commentant le #define HAVE_LIBMPFR de config.h de giac-0.7.2

bon courage!

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Message par magicvinni » jeu. déc. 20, 2007 7:13 pm

Merci, je transmet pour un nouvel essai ;)

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Message par magicvinni » ven. déc. 21, 2007 5:18 pm

Compte rendu de l'essai ;) :

Bonjour,

Je viens de suivre vos recommandation, j'ai dans un premier temps désactivé le support Mpfr cela ne change rien.
J'ai par la suite opté pour la première solution sans résultat, pour information le libmpfr.so est bien généré.
giac-0.7.2]# ldconfig -p|grep mpfr
libmpfr.so.1 (libc6,x86-64) => /usr/local/lib/libmpfr.so.1
libmpfr.so (libc6,x86-64) => /usr/local/lib/libmpfr.so
puis lors d'une recompilation de giac erreur
++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c identificateur.cc -fPIC -DPIC -o .libs/identificateur.lo
g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c identificateur.cc -o identificateur.o >/dev/null 2>&1
mv -f .libs/identificateur.lo identificateur.lo
/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c gen.cc
rm -f .libs/gen.lo
g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c gen.cc -fPIC -DPIC -o .libs/gen.lo
gen.cc: In function 'giac::gen giac::read_binary(const std::string&, unsigned int)':
gen.cc:6237: error: 'mpfr_strtofr' was not declared in this scope
make[2]: *** [gen.lo] Erreur 1
make[2]: Leaving directory `/root/giac/giac-0.7.2/src'
make[1]: *** [all-recursive] Erreur 1
make[1]: Leaving directory `/root/giac/giac-0.7.2'
make: *** [all-recursive-am] Erreur 2

Merci pour votre Aide

parisse
Messages : 5141
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » sam. déc. 22, 2007 8:11 am

c'est à cause de la version de MPFR utilisée, ils ont une rupture de compatibilité entre la 2.0 et la 2.2, cf. dans gen.cc les lignes encadrant la ligne 6237:
// MPFR 2.2
mpfr_strtofr (r.inf, (char *)s.c_str(), 0, 2, GMP_RNDN);
// FOR MPFR 2.0 use instead mpfr_set_str_raw(r.inf,(char *)s.c_str());

PpHd
Messages : 6
Inscription : mer. juil. 11, 2007 7:56 pm

>

Message par PpHd » jeu. déc. 27, 2007 12:41 am

Mon 2c, c'est un problème de version de libraries. Il y a 2 versions de MPFR installées : dans /usr (une MPFR 2.0.x qui ne se compile qu'en statique - voir le /usr/lib/gcc/x86_64-mandriva-linux-gnu/4.0.1/../../../../lib64/libmpfr.a) et dans /usr/local (une MPFR 2.2.x qui a été compilé en dynamique - voir le /usr/local/lib/libmpfr.so.1 ).
Et comme en général entre /usr/local et /usr, s'il y a des versions différentes des librairies, le système se paume (voir la question 3 de la FAQ de MPFR: http://www.mpfr.org/faq.html ), je conseille d'ajouter -I/usr/local/include à CFLAGS et -L/usr/local/lib à LDFLAGS dans le Makefile (ou de modifier les variables d'environnements).
PS: mpfr_set_str_raw n'a jamais fait parti de l'interface officielle exportée par MPFR.

parisse
Messages : 5141
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: >

Message par parisse » jeu. déc. 27, 2007 5:34 pm

PpHd a écrit : je conseille d'ajouter -I/usr/local/include à CFLAGS et -L/usr/local/lib à LDFLAGS dans le Makefile (ou de modifier les variables d'environnements).
PS: mpfr_set_str_raw n'a jamais fait parti de l'interface officielle exportée par MPFR.
ca peut se faire avant d'appeler ./configure par
export CXXFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
Sinon, mpfr_set_str_raw etait dans la doc info de MPFR (je n'ai pas été fouiller dans le source de mpfr pour le trouver!) mais a été malheureusement abandonné ensuite et remplacé par mpfr_strtofr. J'ai aussi rencontré un pb avec MPFR qui utilisait des fonctions de GMP internes qui n'existaient plus a partir de GMP 4.2, sinon tout va bien...

PpHd
Messages : 6
Inscription : mer. juil. 11, 2007 7:56 pm

>

Message par PpHd » ven. déc. 28, 2007 10:57 am

Je ne trouve pas mpfr_set_str_raw dans la doc de MPFR 2.0.x (http://www.mpfr.org/mpfr-2.0.2/mpfr.html ). Seulement mpfr_set_str_binary mais qui est dans la section 'internal'.
MPFR peut utiliser l'interface privée de GMP pour aller plus vite ou seulement l'interface publique (choix de compilation). Par default, c'est l'interface publique seulement. Si on compile MPFR avec l'interface privée, il est évident (?) qu'il faut recompiler MPFR dès qu'on change de version de GMP même si cette version est censée être compatible avec les autres.

parisse
Messages : 5141
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » ven. déc. 28, 2007 4:18 pm

Ce que je peux vous dire, c'est que quand je compile MPFR moi-meme je lance configure sans aucune option spéciale, il est possible que le MPFR que j'utilisais pour créer le package ubuntu ait été compilé autrement (peut-etre était-ce un package), en tous cas ca a posé des problèmes de compatibilité, en principe résolus aujourd'hui puisque le package debian sarge de giac fonctionne sur les ubuntu.
De toutes facons, je n'ai pas l'intention de polémiquer à propos des deux petits problèmes que j'ai rencontrés avec MPFR, c'est du passé et MPFR (m')est très utile.

Répondre