Page 1 sur 1

Bilan de compilations sur Debian Etch

Publié : lun. juin 04, 2007 1:44 pm
par Dominique MICOLLET
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

Publié : lun. juin 04, 2007 4:19 pm
par parisse
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.

Publié : mar. juin 05, 2007 10:49 am
par Dominique MICOLLET
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

Publié : mar. juin 05, 2007 11:09 am
par parisse
en effet, encore un oubli que je corrige, merci!

Publié : mer. juin 06, 2007 7:56 am
par Dominique MICOLLET
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

Publié : mer. juin 06, 2007 10:42 am
par parisse
- 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)

Publié : mar. juin 19, 2007 7:14 am
par Dominique MICOLLET
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

Publié : mar. juin 19, 2007 6:54 pm
par parisse
ca parait curieux puisque le Makefile.am contient:
install-exec-hook:
cp config.h $(includedir)/giac