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

Cordialement
Dominique MICOLLET