Ceci est une ancienne révision du document !
PyML -0.6.15 ne compile pas sous Solaris 10 avec la commande classique:
python setup build creating build/temp.solaris-2.10-i86pc-2.5 creating build/temp.solaris-2.10-i86pc-2.5/PyML creating build/temp.solaris-2.10-i86pc-2.5/PyML/ext compile options: '-I/opt/csw/include/python2.5 -c' cc: PyML/ext/libsvm_wrap.cpp cc: No input file specified, no output generated cc: No input file specified, no output generated error: Command "cc -DNDEBUG -xO3 -xtarget=generic -xarch=generic -I/opt/csw/include/python2.5 -c PyML/ext/libsvm_wrap.cpp -o build/temp.solaris-2.10-i86pc-2.5/PyML/ext/libsvm_wrap.o" failed with exit status 1
Le problème n'est pas lié à Python, mais plutôt aux distutils.
Le développeur du module m'a envoyé un fichier Makefile qui n'est pas à jour. J'ai donc installé PyML sur une debian, et relevé les lignes de compilation, pour les utiliser sur le serveur solaris.
- il faut faire des modifications
- que ce soit avec gcc3 ou gcc4.0.2, ça ne passe pas.
Par exemple, avec gcc4.1.2 sur debian, l'erreur consistant à ne pas déclarer une variable n'est pas détectée! On peut faire la modif suivante dans le fichier PyML/ext/FeatureVector.cpp, en commentant la ligne
//cout << "index: " << index << endl;
Par contre, pour cette erreur:
ld: fatal: relocation error: file: build/temp.solaris-x86-2.4/PyML/ext/SparseDataSet.o section: .rel.debug_info symbol: : symbol has been discarded with discarded section: .gnu.linkonce.t._ZSt6fill_nIPijiET_S1_T0_RKT1_ collect2: ld returned 1 exit status ld: fatal: relocation error: file: build/temp.solaris-x86-2.4/PyML/ext/VectorDataSet.o section: .rel.debug_info symbol: : symbol has been discarded with discarded section: .gnu.linkonce.t._ZSt6fill_nIPijiET_S1_T0_RKT1_ collect2: ld returned 1 exit status
peut etre lié à ce probleme
hack dans le script setup.py
trouvé par N. Ollinger, permet d'avancer dans la compilation, mais maintenant, c'est un flag à l'édition de liens qui manque. De plus, il a fallu modifier un fichier à cause de hash_map
> python setup.py build --debug running build running build_py running build_ext building 'PyML/ext/_mylibsvm' extension C compiler: /usr/lib/python2.4/pyCC compile options: '-g -I/usr/include/python2.4 -c' pyCC: PyML/ext/mylibsvm_wrap.cpp "PyML/ext/SparseDataSet.h", line 14: Error: Could not open include file<hash_map>. "PyML/ext/SparseDataSet.h", line 27: Error: hash_map is not a member of std. "PyML/ext/SparseDataSet.h", line 44: Error: A class template name was expected instead of hash_map. 3 Error(s) detected. "PyML/ext/SparseDataSet.h", line 14: Error: Could not open include file<hash_map>. "PyML/ext/SparseDataSet.h", line 27: Error: hash_map is not a member of std. "PyML/ext/SparseDataSet.h", line 44: Error: A class template name was expected instead of hash_map. 3 Error(s) detected. error: Command "/usr/lib/python2.4/pyCC -g -I/usr/include/python2.4 -c PyML/ext/mylibsvm_wrap.cpp -o build/temp.solaris-2.10-i86pc-2.4/PyML/ext/mylibsvm_wrap.o" failed with exit status 3
Pour hash_map, il faut linker avec “-library=stlport4”, mais impossible de lui faire rajouter cet argument!?