Page 1 sur 1
mingw32
Publié : jeu. août 15, 2013 8:05 pm
par frederic han
Salut,
j'essaye de (cross) compiler giac 1.1 avec
./configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32
(mis a part deux petits ennuis (global.h et first.h): wince replacement not found
et gammaf inconnus)) que j'ai vire, ca compile jusque la:
Code : Tout sélectionner
/bin/bash ../libtool --tag=CXX --mode=compile i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -g -O2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT maple.lo -MD -MP -MF .deps/maple.Tpo -c -o maple.lo maple.cc
libtool: compile: i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -g -O2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT maple.lo -MD -MP -MF .deps/maple.Tpo -c maple.cc -DDLL_EXPORT -DPIC -o .libs/maple.o
maple.cc: In function ‘giac::gen giac::_open(const giac::gen&, const giac::context*)’:
maple.cc:823:16: erreur: ‘O_RDWR’ was not declared in this scope
maple.cc:823:25: erreur: ‘O_CREAT’ was not declared in this scope
maple.cc:823:35: erreur: ‘O_TRUNC’ was not declared in this scope
maple.cc:823:45: erreur: ‘O_APPEND’ was not declared in this scope
make: *** [maple.lo] Erreur 1
as tu une idee?
(pour l'instant je n'ai installe que gmp)
(j'essaye de compiler qcas avec la libgiac pour windows, ca me semble plus simple (en tout cas mieux documente) avec mingw32+QT)
Merci
Fred
Re: mingw32
Publié : ven. août 16, 2013 5:18 pm
par parisse
salut,
bizarre que tu aies cette erreur, car il y a un test de define avec MINGW juste avant. Essaie de rajouter le define correspondant dans config.h pour voir. Sinon, tu peux t'inspirer de
http://www-fourier.ujf-grenoble.fr/~par ... giac32.tgz
Ce serait super que tu arrives a compiler pour windows le module python! De mon cote, je n'ai pas les outils avec moi avant mon retour a la fac debut septembre...
Re: mingw32
Publié : sam. août 17, 2013 9:51 pm
par frederic han
Bon j'ai deja reussi a compiler qcas (et aussi libqcas.a) sous mingw32 avec une libgiac ayant: pthread,gmp,mpfr,gsl.
l'archive est la:
http://www.math.jussieu.fr/~han/xcas/qcas
Effectivement le ./configure --host=i686-w64-mingw32 ne definit pas __MINGW_H
en le definissant dans config.h j'ai eu les ennuis suivant:
les "small" du nouveau code de grobner dans cocoa.cc et solve.cc sont en conflit avec un autre "small" j'ai donc remplace tous les "small" par autre chose dans ces 2 fichiers.
dans global.cc (giac 1.1 stable)
ligne 867:
#ifdef HAVE_LIBPTHREAD
//fred ,eval_thread(0),stackaddr(0)
,eval_thread(),stackaddr(0) //fred MINGW_H
#endif
pour giacpy je ne sais pas encore trop ce qu'il faut faire.
Fred
Re: mingw32
Publié : dim. août 18, 2013 7:57 am
par parisse
tu veux dire les variables booleennes small ou d'autres variables/types?
le mieux serait de les renommer en giacsmall
Re: mingw32
Publié : dim. août 18, 2013 11:53 am
par frederic han
les small tout court de cococa.cc et solve.cc et pas les smallpos ni smaltd ...
Ex: tdeg_t small,cur
oui il suffit de leur donner un autre nom et ca marche.
Fred
Re: mingw32
Publié : dim. nov. 10, 2013 8:21 am
par frederic han
J'ai encore des problemesavec small et mingw voici les patch que j'applique:
pour solve.cc
Code : Tout sélectionner
4916c4916
< index_t small,cur;
---
> index_t small0,cur;
4923c4923
< index_lcm(res[B[smallpos].first].coord.front().index,res[B[smallpos].second].coord.front().index,small);
---
> index_lcm(res[B[smallpos].first].coord.front().index,res[B[smallpos].second].coord.front().index,small0);
4930c4930
< || (curtd==smalltd && res.front().is_strictly_greater(small,cur))
---
> || (curtd==smalltd && res.front().is_strictly_greater(small0,cur))
4933c4933
< swap(small,cur); // small=cur;
---
> swap(small0,cur); // small0=cur;
et pour cocoa.cc
Code : Tout sélectionner
1228c1228
< bool small=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
---
> bool small0=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
1235c1235
< if (small)
---
> if (small0)
1255c1255
< if (small)
---
> if (small0)
1281c1281
< if (small){
---
> if (small0){
1755c1755
< bool small=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
---
> bool small0=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
1772c1772
< // if (small) TMP1.coord.push_back(*pt);
---
> // if (small0) TMP1.coord.push_back(*pt);
1776c1776
< if (small){
---
> if (small0){
1819c1819
< // if (small) swap(rem.coord,TMP1.coord);
---
> // if (small0) swap(rem.coord,TMP1.coord);
1858c1858
< // if (small) swap(p.coord,TMP1.coord);
---
> // if (small0) swap(p.coord,TMP1.coord);
1992c1992
< bool small=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
---
> bool small0=env && env->moduloon && env->modulo.type==_INT_ && env->modulo.val;
1998c1998
< if (small)
---
> if (small0)
2026c2026
< tdeg_t small,cur;
---
> tdeg_t small0,cur;
2034c2034
< index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small,order);
---
> index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small0,order);
2036c2036
< smallsugar=res[B[smallpos].first].sugar+(small-res[B[smallpos].first].coord.front().u).total_degree();
---
> smallsugar=res[B[smallpos].first].sugar+(small0-res[B[smallpos].first].coord.front().u).total_degree();
2047c2047
< doswap=tdeg_t_strictly_greater(small,cur,order);
---
> doswap=tdeg_t_strictly_greater(small0,cur,order);
2052c2052
< doswap=tdeg_t_strictly_greater(small,cur,order);
---
> doswap=tdeg_t_strictly_greater(small0,cur,order);
2056c2056
< swap(small,cur); // small=cur;
---
> swap(small0,cur); // small0=cur;
2759c2759
< // if (small) TMP1.coord.push_back(*pt);
---
> // if (small0) TMP1.coord.push_back(*pt);
2860c2860
< // if (small) swap(p.coord,TMP1.coord);
---
> // if (small0) swap(p.coord,TMP1.coord);
2887c2887
< // if (small) TMP1.coord.push_back(*pt);
---
> // if (small0) TMP1.coord.push_back(*pt);
3168c3168
< tdeg_t small,cur;
---
> tdeg_t small0,cur;
3176c3176
< index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small,order);
---
> index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small0,order);
3178c3178
< smallsugar=res[B[smallpos].first].sugar+(small-res[B[smallpos].first].coord.front().u).total_degree();
---
> smallsugar=res[B[smallpos].first].sugar+(small0-res[B[smallpos].first].coord.front().u).total_degree();
3189c3189
< doswap=tdeg_t_strictly_greater(small,cur,order);
---
> doswap=tdeg_t_strictly_greater(small0,cur,order);
3194c3194
< doswap=tdeg_t_strictly_greater(small,cur,order);
---
> doswap=tdeg_t_strictly_greater(small0,cur,order);
3198c3198
< swap(small,cur); // small=cur;
---
> swap(small0,cur); // small0=cur;
6259c6259
< tdeg_t small,cur;
---
> tdeg_t small0,cur;
6268,6270c6268,6270
< index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small,order);
< smallsugar=res[B[smallpos].first].sugar+(small-res[B[smallpos].first].coord.front().u).total_degree();
< smalltotdeg=small.total_degree();
---
> index_lcm(res[B[smallpos].first].coord.front().u,res[B[smallpos].second].coord.front().u,small0,order);
> smallsugar=res[B[smallpos].first].sugar+(small0-res[B[smallpos].first].coord.front().u).total_degree();
> smalltotdeg=small0.total_degree();
6282c6282
< doswap=tdeg_t_strictly_greater(small,cur,order);
---
> doswap=tdeg_t_strictly_greater(small0,cur,order);
6297c6297
< swap(small,cur); // small=cur;
---
> swap(small0,cur); // small0=cur;
Re: mingw32
Publié : sam. déc. 14, 2013 10:52 am
par frederic han
Salut,
j'ai essaye d'ajouter ntl et pari en cross compilant avec mingw32.
Je pense que pour ntl ca marche, mais pour pari il y a un probleme a la fin:
as tu une idee? (j'ai pris pari 2.5.4)
Code : Tout sélectionner
/bin/bash ../libtool --tag=CXX --mode=link i686-w64-mingw32-g++ -g -O2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -static-libgcc -static-libstdc++ -L/usr/i686-w64-mingw32/lib -o icas.exe icas.o libxcas.la -lgsl -lgslcblas -lpthread -lm -lmpfr -lgmp
libtool: link: i686-w64-mingw32-g++ -g -O2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -static-libgcc -static-libstdc++ -o .libs/icas.exe icas.o -L/usr/i686-w64-mingw32/lib ./.libs/libxcas.a /home/fred/dev/windows/giac-1.1.0/src/.libs/libgiac.a -lntl -lpari /usr/i686-w64-mingw32/lib/libgsl.dll.a /usr/i686-w64-mingw32/lib/libgslcblas.dll.a -lpthread /usr/i686-w64-mingw32/lib/libmpfr.a /usr/i686-w64-mingw32/lib/libgmp.a -L/usr/i686-w64-mingw32/lib
/home/fred/dev/windows/giac-1.1.0/src/.libs/libgiac.a(pari.o): In function `GEN2string':
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:251: undefined reference to `_GENtostr'
/home/fred/dev/windows/giac-1.1.0/src/.libs/libgiac.a(pari.o): In function `pari_exec':
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:650: undefined reference to `_PARI_stack_limit'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:649: undefined reference to `_avma'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:651: undefined reference to `_PARI_stack_limit'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:655: undefined reference to `_cb_pari_err_recover'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:660: undefined reference to `_avma'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:662: undefined reference to `_PARI_stack_limit'
/home/fred/dev/windows/giac-1.1.0/src/pari.cc:666: undefined reference to `_gp_read_str'
Re: mingw32
Publié : dim. déc. 15, 2013 7:48 am
par parisse
Bizarre, on dirait que tous ces noms de fonctions de pari ont un _ qui a ete ajoute, du coup le linker ne les trouve pas. Tu as compile pari avec le meme compilo?
Re: mingw32
Publié : mer. déc. 18, 2013 11:29 am
par frederic han
Oui effectivement, la cross compilation n'etait pas bien passee et il melangeait les compilateurs.
Pour l'instant je n'arrive donc pas a compiler giac avec pari sous mingw.
En revanche NTL semble marcher. As tu un test pour verifier?
Fred
Re: mingw32
Publié : mer. déc. 18, 2013 12:30 pm
par parisse
Oui, tu peux faire
export GIAC_DEBUG=1
puis tu lances ./chk_cas dans le repertoire check et tu devrais voir des sorties du genre
Code : Tout sélectionner
*** start SFFactor.
factorization modulo small primes...
skipping 2
skipping 3
skipping 5
factoring mod 7...2.2e-05
degree sequence: 1*2
small prime time: 0.000113, irreducible.
end - step 0, 0; time = 0.000137
begin - step -1, 0; deg = 4