comment installer la librairie giac sous windows XP ?

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

Modérateur : xcasadmin

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

Message par parisse » ven. août 04, 2006 6:55 am

* pour la compilation de giac, normalement vous devriez avoir la librairie. Tableur.cc c'est l'interface, j'ai du oublier de mettre des #ifdef HAVE_LIBFLTK et #endif en début et fin des fichiers sources de l'interface (fichiers .cc dont le nom commence par une majuscule), d'ou les erreurs. Vous avez le choix entre les rajouter à la main ou installer et compiler fltk et relancer la compilation à ./configure. Vous pouvez aussi installer à la main, libgiac.a dans /usr/local/lib et tous les fichiers .h de src ainsi que config.h dans /usr/local/include/giac (répertoire à créer)
* Si vous avez fait startx, vous pouvez remonter dans le défilement en tapant simultanément sur shift et pageup. En-dehors ca marche peut-etre aussi. Vous pouvez aussi apres startx ouvrir une fenetre avec barre de défilement en tapant
xterm -sb
(man xterm vous donnera toutes les options de xterm mais il y en a enormément. En général man nom_de_commande donne la liste des options d'une commande).
* effectivement quand on compile sous windows, le fichier généré s'appelle a.exe, car le nom Unix a.out n'a pas l'extension qui conviendrait pour etre exécutable sous windows. Il faut ajouter l'option -o bonjour.exe pour définir un autre nom. Pour les extensions, les conventions ont évolués, le plus à la mode aujourd'hui c'est en effet .cpp et .C, j'en suis resté au .cc qui est reconnu par les éditeurs sous Unix pour la coloration syntaxique.
* avec un éditeur sous windows qui permet de lancer une commande on peut compiler dans l'éditeur, c'est la raison de la 1ere ligne de chaque fichier source de giac, elle indique à l'éditeur emacs comment compiler. Ca marchera à l'identique si vous installez emacs (version X11). Avec un éditeur windows natif, c'est plus difficile car il faut lancer g++ avec les bons chemins, il est peut-etre necessaire de le lancer par l'intermédiaire d'un shell-script et de la commande qui doit marcher sous dos
chemin\bash.exe chemin\nom_de_fichier_shellscript
et on met dans nom_de_fichier_shellscript la commande g++ ...
* Voila, bon week-end!

ATOLL27
Messages : 12
Inscription : dim. juil. 30, 2006 11:22 am

Message par ATOLL27 » sam. août 05, 2006 7:46 am

Bonjour,encore moi!
j'ai mis plus de 12 heures pour télécharger emacs!
Hier,il était impossible de se connecter à www.fltk.org

J'ai choisi de compiler la librairie fltk-1.1.x-r274 car j'ai pensé que je pourrais en avoir besoin pour mes propre applications.
Voici ci dessous la liste des erreur obtenues.Espèrons qu'il ne s'agisse que d'une petite erreur banale que vous saurez déceler vite fait sans pour autant connaître le code.
=== making png ===
Compiling png.c...
In file included from png.c:13:
png.h:346:18: zlib.h: No such file or directory
In file included from png.h:349,
from png.c:13:
pngconf.h:1128: error: parse error before '*' token
pngconf.h:1128: warning: type defaults to `int' in declaration of `png_zcharp'
pngconf.h:1128: warning: data definition has no type or storage class
pngconf.h:1129: error: parse error before '*' token
pngconf.h:1129: warning: type defaults to `int' in declaration of `png_zcharpp'
pngconf.h:1129: warning: data definition has no type or storage class
pngconf.h:1130: error: parse error before '*' token
pngconf.h:1130: warning: type defaults to `int' in declaration of `png_zstreamp'
pngconf.h:1130: warning: data definition has no type or storage class
In file included from png.c:13:
png.h:1066: error: parse error before "z_stream"
png.h:1066: warning: no semicolon at end of struct or union
png.h:1138: warning: built-in function 'gamma' declared as non-function
png.h:1312: error: parse error before '}' token
png.h:2775: error: parse error before "png_zalloc"
png.h:2775: error: parse error before "png_ptr"
png.h:2775: warning: type defaults to `int' in declaration of `png_zalloc'
png.h:2775: warning: data definition has no type or storage class
png.h:2778: error: parse error before "png_ptr"
png.c: In function `png_set_sig_bytes':
png.c:98: error: dereferencing pointer to incomplete type
png.c: At top level:
png.c:143: error: parse error before "png_zalloc"
png.c:143: error: parse error before "png_ptr"
png.c:144: warning: return type defaults to `int'
png.c: In function `png_zalloc':
png.c:146: error: `png_ptr' undeclared (first use in this function)
png.c:146: error: (Each undeclared identifier is reported only once
png.c:146: error: for each function it appears in.)
png.c:147: error: dereferencing pointer to incomplete type
png.c:150: error: `items' undeclared (first use in this function)
png.c:150: error: `size' undeclared (first use in this function)
png.c:153: warning: return makes integer from pointer without a cast
png.c:157: error: dereferencing pointer to incomplete type
png.c:159: error: dereferencing pointer to incomplete type
png.c:176: error: `voidpf' undeclared (first use in this function)
png.c:176: error: parse error before "ptr"
png.c: At top level:
png.c:185: error: parse error before "png_ptr"
png.c: In function `png_zfree':
png.c:187: error: `png_ptr' undeclared (first use in this function)
png.c:187: error: `ptr' undeclared (first use in this function)
png.c: In function `png_reset_crc':
png.c:196: error: dereferencing pointer to incomplete type
png.c:196: warning: implicit declaration of function `crc32'
png.c:196: error: `Z_NULL' undeclared (first use in this function)
png.c: In function `png_calculate_crc':
png.c:209: error: dereferencing pointer to incomplete type
png.c:211: error: dereferencing pointer to incomplete type
png.c:217: error: dereferencing pointer to incomplete type
png.c:222: error: dereferencing pointer to incomplete type
png.c:222: error: dereferencing pointer to incomplete type
png.c:222: error: `uInt' undeclared (first use in this function)
png.c:222: error: parse error before "length"
png.c: In function `png_create_info_struct':
png.c:240: error: dereferencing pointer to incomplete type
png.c:240: error: dereferencing pointer to incomplete type
png.c: In function `png_destroy_info_struct':
png.c:269: error: dereferencing pointer to incomplete type
png.c:270: error: dereferencing pointer to incomplete type
png.c: In function `png_info_destroy':
png.c:583: error: dereferencing pointer to incomplete type
png.c:585: error: dereferencing pointer to incomplete type
png.c:586: error: dereferencing pointer to incomplete type
png.c:587: error: dereferencing pointer to incomplete type
png.c: In function `png_get_io_ptr':
png.c:601: error: dereferencing pointer to incomplete type
png.c: In function `png_init_io':
png.c:615: error: dereferencing pointer to incomplete type
png.c: In function `png_convert_to_rfc1123':
png.c:630: error: dereferencing pointer to incomplete type
png.c:632: error: dereferencing pointer to incomplete type
png.c:658: error: dereferencing pointer to incomplete type
png.c:664: error: dereferencing pointer to incomplete type
png.c: In function `png_handle_as_unknown':
png.c:730: error: dereferencing pointer to incomplete type
png.c:732: error: dereferencing pointer to incomplete type
png.c:732: error: dereferencing pointer to incomplete type
png.c:733: error: dereferencing pointer to incomplete type
png.c: In function `png_reset_zstream':
png.c:744: warning: implicit declaration of function `inflateReset'
png.c:744: error: dereferencing pointer to incomplete type
png.c: In function `png_init_mmx_flags':
png.c:763: error: dereferencing pointer to incomplete type
png.c:764: error: dereferencing pointer to incomplete type
png.c:798: error: dereferencing pointer to incomplete type
make[1]: *** [png.o] Error 1

Bon week-end.

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

Message par parisse » sam. août 05, 2006 9:00 am

oui, il vous manque la zlib, il faut donc l'installer, elle doit etre disponible depuis le setup de cygwin, sinon il faut la compiler comme les autres.

a+

ATOLL27
Messages : 12
Inscription : dim. juil. 30, 2006 11:22 am

Message par ATOLL27 » dim. août 06, 2006 10:45 pm

Bonjour,

J'espère que vous avez passé un excellent week-end.
La librairie zlib est incluse par défaut dans l'installation de cygwin.
J'ai néanmoins réinstallé cette librairie via cygwin.
La compilation de fltk s'est soldée par le même message d'erreur.
J'ai alors téléchargé zlib et l'ai installée sans aucun problème.
Nouvelle compilation de fltk : toujours le même message erreur.
N'y a-t-il pas un moyen simple de savoir si une librairie a été installée correctement?

J'ai essayé de compiler avec giac le petit exemple proposé dans votre tutoriel. J'obtiens un message d'erreur similaire à celui de l'installation de fltk :giac/giac.h:no such file or directory.
Un merci de plus et bonne journée.

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

Message par parisse » lun. août 07, 2006 6:01 am

Pour la zlib, peut-etre que les mainteneurs ont créé 2 packages, un pour la librairie et un pour les headers, qui s'appelerait alors zlib-dev ou quelque chose du genre et n'est peut-etre pas installé, il faut vérifier que /usr/include ou /usr/local/include contient le fichier zlib.h. Sinon puisque vous avez compilé depuis le source, faites un make install dans le répertoire de la zlib ou recopiez zlib.h directement avec la commande cp.
Pour giac, il faut aussi vérifier que l'install a été faite, le répertoire /usr/local/include doit contenir un sous-répertoire giac avec entre autres le fichier giac.h.

ATOLL27
Messages : 12
Inscription : dim. juil. 30, 2006 11:22 am

Message par ATOLL27 » lun. août 07, 2006 11:18 am

ça coince dans la dernière ligne droite!
J'ai fait directement le make install pour zlib et j'ai tenté de compiler fltk.Toujours le même message d'erreur.
Dans usr/local/include je n'ai que 2 fichiers:zconf.h et zlib.h.
Dans usr/include j'ai aussi zconf.h et zlib.h parmi beaucoup d'autres fichiers et répertoires.
Dans usr/local/include:que les 2 fichiers zconf.h et zlib.h donc pas de sous-répertoire giac.De même pas de giac dans usr/include.

ATOLL27
Messages : 12
Inscription : dim. juil. 30, 2006 11:22 am

Message par ATOLL27 » lun. août 07, 2006 11:20 am

ça coince dans la dernière ligne droite!
J'ai fait directement le make install pour zlib et j'ai tenté de compiler fltk.Toujours le même message d'erreur.
Dans usr/local/include je n'ai que 2 fichiers:zconf.h et zlib.h.
Dans usr/include j'ai aussi zconf.h et zlib.h parmi beaucoup d'autres fichiers et répertoires.
Dans usr/local/include:que les 2 fichiers zconf.h et zlib.h donc pas de sous-répertoire giac.De même pas de giac dans usr/include.

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

Message par parisse » lun. août 07, 2006 2:20 pm

pour la zlib, je ne vois pas... peut-etre reesayer le ./configure dans le repertoire de png.
Pour giac c'est normal si vous n'avez pas copie vous-meme les fichiers *.h, il faut donc creer
mkdir /usr/local/include/giac
puis les copier depuis src par la commande
cp *.h /usr/local/include/giac
il faut aussi copier config.h du repertoire giac
Enfin il faut copier la libgiac.a dans /usr/local/lib

ATOLL27
Messages : 12
Inscription : dim. juil. 30, 2006 11:22 am

Message par ATOLL27 » mar. août 08, 2006 2:26 pm

Pour le problème avec zlib:tant pis!On verra plus tard.
Pour giac elle est apparement installée.
J'ai essayé l 'exemple suivant:
// -*- compile-command: "g++ -g essai.cc -lgiac -lgmp" -*-
#include<giac/giac.h>
using namespace std;
using namespace giac;

int main(){
gen g;
cout << "Enter an expression: ";
cin >> g;
g=eval(g);
cout << "Factorization of " << g << " is " << factor(g) << endl;
}
en compilant j'obtiens une longue liste d'erreurs mais le début est ceci:

$ g++ -g e.cc -lgiac -lgmp
/usr/local/lib/libgiac.a(gen.o): In function `_ZN4giac11real_objectC2Ev':
/home/j-fbontemps/giac-0.6.0/src/gen.cc:410: undefined reference to `_mpfr_init'
/usr/local/lib/libgiac.a(gen.o): In function `_ZN4giac11real_objectC1Ev':
/home/j-fbontemps/giac-0.6.0/src/gen.cc:410: undefined reference to `_mpfr_init'
/usr/local/lib/libgiac.a(gen.o): In function `_ZN4giac11real_objectC2ERKS0_':
/home/j-fbontemps/giac-0.6.0/src/gen.cc:418: undefined reference to `_mpfr_get_p
Qu'est-ce qui ne va pas?Qu'est-ce que mpfr?
Et comme d'habitude,encore un grand merci;

ps: la dernière fois,vous m'avez dit de copier les fichiers à partir de la ligne de commande.Un copier-coller n'est-il pas identique?

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

Message par parisse » mar. août 08, 2006 4:45 pm

* MPFR c'est la librairie gérant les flotttants en multiprécision. Sous windows, vous allez devoir indiquer toutes les librairies utilisees par giac avec des -l (sous linux le linker determine automatiquement les librairies necessaires c'est pour cela que les options -lgiac -lgmp suffisent), probablement quelque chose du genre
g++ e.cc -lgiac -lgmp -lmpfr -lgsl -lgslcblas -lntl -lgmp -lpari -lpthread -lintl -mwindows -lole32 -luuid -lcomctl32 -lwsock32
(enlevez celles que vous n'avez pas ajoutez-en s'il en manque en regardant les messages d'erreurs)
* Sinon pour la compilation de png, il faudrait peut-etre ouvrir le fichier qui buggue png.h et regarder comment est includé le fichier zlib.h,
si c'est #include<zlib.h> il devrait le trouver s'il est dans /usr/local/include ou /usr/include, par contre s'il y a un chemin du type #include <zlib/zlib.h> c'est qu'il n'est pas bien placé. On peut aussi rajouter des répertoires include qui ne seraient pas lus avec l'option -I, par exemple -I/usr/local/include (à mettre dans CFLAGS= ou CXXFLAGS= du Makefile ou dans les options des lignes de compilation gcc).

Répondre