2016-06-13 10 views
0

ich Python unter Cygwin verwenden und jetzt brauche ich xgboost zu installieren.Compile libxgboost.so fehlschlagen, wenn installieren xgboost unter Cygwin von win10-64bit

Wenn ich xgboost in Windows verwende. Ich verwende zuerst mingw, um libxgboost.dll zu machen und dann python setup.py install erfolgreich zu installieren.

Aber in Cygwin, was ich brauche, ist libxgboost.so. Also folge ich Schritt für Schritt steps of xgboost doc.

Und wenn ich in Cygwin machen kann, Fehler auslöst:

fopen64 not declared 

Ich bin nicht sicher, wie dies zu vermeiden und fopen64 zu ermöglichen ...

Und wie xgboost zu bauen und installieren unter Cygwin-Umgebung? NICHT bauen, um unter Windows zu verwenden !!

===============================
Gefolgt Kommentar: ich zu diesem Fehler führen, wenn ausführen
python setup.py install in ./python-package

Traceback (most recent call last): 
    File "setup.py", line 19, in <module> 
    LIB_PATH = libpath['find_lib_path']() 
    File "xgboost/libpath.py", line 45, in find_lib_path 
    'List of candidates:\n' + ('\n'.join(dll_path))) 
__builtin__.XGBoostLibraryNotFound: Cannot find XGBoost Libarary in the candicate path, did you install compilers and run build.sh in root path? 
List of candidates: 
/home/gaoben/xgboost/python-package/xgboost/libxgboost.so 
/home/gaoben/xgboost/python-package/xgboost/../../lib/libxgboost.so 
/home/gaoben/xgboost/python-package/xgboost/./lib/libxgboost.so 

btw ..
im gewinnen, ist es linux-ähnlichen Tools, die einfacher zu entwickeln macht?
Ich wähle cygwin, weil es einfach ist, die Entwicklungsumgebung zu konfigurieren ...
z.B. mit Hilfe von apt-cyg ..

Antwort

0

fopen64 ist auf 32 Bit definiert, um 64-Bit-Betrieb zu ermöglichen. Bei Cygwin 64 Bit sollte es jedoch durch fopen ersetzt werden.

einige

#if defined(__x86_64__) 
#define fopen64 fopen 
#endif 

in

./dmlc-core/src/io/local_filesys.cc 
./dmlc-core/src/io/single_file_split.h 
./rabit/include/rabit/internal/utils.h 

und lib/libxgboost.dll für Cygwin gebaut werden hinzuzufügen.

+0

Nun, ich möchte Xgboost in Python von ** Cygwin **, nicht Windows verwenden. Folgen Sie Ihrer Methode, ich habe erfolgreich erstellt libxgboost.dll, aber es erfordert ** libxgboost.so **. Ist es möglich eine * .so Datei unter Cygwin zu erstellen und zu benutzen? – bengxy

+0

shared lib auf cygwin/windows sind * .dll nicht * .so. Warum denkst du, du brauchst libxgboost.so? – matzeri

+0

Ich aktualisiere die Frage oben. wenn ich 'python setup install' starte. Es sagt, brauche libxgboost.so – bengxy