Bilan de compilations sur Debian Etch

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

Modérateur : xcasadmin

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Bilan de compilations sur Debian Etch

Message par Dominique MICOLLET » lun. juin 04, 2007 1:44 pm

Bonjour,

Comme je viens de mettre à jour ma machine sous Debian Etch, je recompile giac/xcas.

Voilà un petit bilan, pour information.

A partir d'une installation basique d'Etch, j'ai rajouté uniquement libgmp3-dev et libfltk1.1 et bien sûr les paquets automatiquement réclamés par ces derniers.

On notera donc que je n'ai pas installé mpfr, pari et gsl.

Version 0.6.2 :

Dans un premier temps, je n'avais pas installé libfltk : la compilation de giac s'est bien passée, mais celle de xcas a échoué. Je m'y attendais un peu puisque fltk n'était pas installlée.
En fait je m'attendais plutôt à ce qu'il ne soit pas compilé du tout.
Le message d'erreur m'a interpellé car il était pointait sur des lignes de /usr/include/gmp.h.
Le fait d'installer fltk, de reconfigurer et de compiler fait disparaitre cette erreur : j'avoue ne pas comprendre pourquoi.

Version 0.6.3
Compilation tentée après celle de la version 0.6.2 : la compilation de giac ne passe pas : voilà le message d'erreur :

/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c gausspol.cc
rm -f .libs/gausspol.lo
g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I.. -g -O2 -c gausspol.cc -fPIC -DPIC -o .libs/gausspol.lo
threaded.h: In function 'void giac::smallmult(const std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T, U> > >&, const std::vecto
r<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T, U> > >&, std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T, U> > >&
, size_t) [with T = __gmp_expr<__mpz_struct [1], __mpz_struct [1]>, U = unsigned int]':
gausspol.cc:520: instantiated from here
threaded.h:163: error: no matching function for call to 'tmp_operator_times(__gmp_expr<__mpz_struct [1], __mpz_struct [1]>&, const __gmp_expr<__mpz_
struct [1], __mpz_struct [1]>&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]>&)'
gen.h:363: note: candidates are: void giac::tmp_operator_times(const giac::gen&, const giac::gen&, giac::gen&)
threaded.h:129: note: void giac::tmp_operator_times(const double&, const double&, double&)
threaded.h:133: note: void giac::tmp_operator_times(const longlong&, const longlong&, longlong&)
threaded.h: In function 'void* giac::do_threadmult(void*) [with T = __gmp_expr<__mpz_struct [1], __mpz_struct [1]>, U = unsigned int]':
threaded.h:319: instantiated from 'bool giac::threadmult(const std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T, U> > >&, con
st std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsigned<T, U> > >&, std::vector<giac::T_unsigned<T, U>, std::allocator<giac::T_unsign
ed<T, U> > >&, U, size_t) [with T = __gmp_expr<__mpz_struct [1], __mpz_struct [1]>, U = unsigned int]'
gausspol.cc:519: instantiated from here
threaded.h:244: error: no matching function for call to 'tmp_operator_times(__gmp_expr<__mpz_struct [1], __mpz_struct [1]>&, const __gmp_expr<__mpz_
struct [1], __mpz_struct [1]>&, __gmp_expr<__mpz_struct [1], __mpz_struct [1]>&)'
gen.h:363: note: candidates are: void giac::tmp_operator_times(const giac::gen&, const giac::gen&, giac::gen&)
threaded.h:129: note: void giac::tmp_operator_times(const double&, const double&, double&)
threaded.h:133: note: void giac::tmp_operator_times(const longlong&, const longlong&, longlong&)

Il semble que la version de gmp distribuée avec la Debian Etch est assez différente de celle distribuée avec sarge et est peut-être la cause du problème.

Incidemment, mais ça n'a peut être aucun rapport, .configure me génère une erreur qui semble cependant sans conséquence immédiate :
./configure: line 7392: AM_PROG_LIBTOOL: command not found


Voilà.

La 0.6.2 fonctionne :lol:, donc tout cela est sans grande importance.

Cordialement

Dominique MICOLLET
Cordialement

Dominique MICOLLET

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

Message par parisse » lun. juin 04, 2007 4:19 pm

le pb avec la 0.6.3 semble lie a l'utilisation de mpz_class, qui ne sert de toutes facons pratiquement pas. Le plus simple c'est d'enlever HAVE_LIBGMPXX de config.h ou la partie entre #ifdef et #endif de gausspol.cc.

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Message par Dominique MICOLLET » mar. juin 05, 2007 10:49 am

Bonjour,

J'ai fait ceci :

[quote]Le plus simple c'est d'enlever HAVE_LIBGMPXX de config.h[/quote]

Ça compile sans difficulté.

L'installation des binaires est OK.

Par contre la génération de la documentation échoue, sur l'absence d'un fichier fltkcol.tex.

Je n'en ai pas trouvé trace dans la version stable (que je n'ai pas installée) ni sur la toile.

Cordialement

Dominique MICOLLET
Cordialement

Dominique MICOLLET

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

Message par parisse » mar. juin 05, 2007 11:09 am

en effet, encore un oubli que je corrige, merci!

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Message par Dominique MICOLLET » mer. juin 06, 2007 7:56 am

Suite et fin du bilan.


L'installation des binaires se fait sans problème.

Pour l'utilisation de la bibliothèque giac pour le développement d'une application autonome, il manque la recopie dans .../include/giac du fichier config.h.

Par ailleurs serait-il possible d'avoir deux cibles séparées dans le makefile pour la fabrication de la documentation et de son installation. La structure actuelle fabriquee la doc au moment de l'installation, ce qui prend du temps quand on fait des mises à jour des binaires, et qui oblige à le faire sous root, ce qui ne me semble pas très prudent.

Cordialement

Dominique MICOLLET
Cordialement

Dominique MICOLLET

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

Message par parisse » mer. juin 06, 2007 10:42 am

- pour la copie de config.h: c'est bizarre, normalement ca devrait etre fait par make install car Makefile.am contient la ligne de copie dans le repertoire giac-0.6.3. Je vais le rajouter a tout hasard aussi dans le Makefile de src.
- pour eviter la compilation de la doc, le plus simple est de faire make install depuis le repertoire src (c'est ce que je fais en general)

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Message par Dominique MICOLLET » mar. juin 19, 2007 7:14 am

Bonjour


[quote]pour la copie de config.h: c'est bizarre, normalement ca devrait etre fait par make install [/quote]

C'est effectivement fait, mais pas là ou je l'attendais....

Sur une installation dans mon répertoire personnel, il apparait sous .../include et non .../include/giac.

Ce qui peut poser problème si plusieurs logiciels décident de placer là leur config.h :D

Cordialement

Dominique MICOLLET

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

Message par parisse » mar. juin 19, 2007 6:54 pm

ca parait curieux puisque le Makefile.am contient:
install-exec-hook:
cp config.h $(includedir)/giac

Répondre