在win10-64bit的cygwin下安装xgboost时编译libxgboost.so会失败

时间:2016-06-13 13:50:29

标签: python windows cygwin fopen xgboost

我在 cygwin 下使用python,现在我需要安装 xgboost

当我在windows中使用xgboost时。我首先使用 mingw 制作 libxgboost.dll ,然后使用python setup.py install成功安装。

但是在cygwin中,我需要的是 libxgboost.so 。所以我一步一步地遵循steps of xgboost doc

当我在cygwin中制作时,错误会引发:

fopen64 not declared

我不确定如何避免这种情况并启用fopen64 ...

如何在cygwin环境下构建和安装xgboost?不构建在windows下使用!!

===============================
跟着评论: 执行
时我遇到了这个错误 ./python-package中的python setup.py install

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

顺便说一句..
在win中,是否有类似Linux的工具使开发更容易?
我选择了cygwin,因为配置开发env很容易...
例如在apt-cyg的帮助下..

1 个答案:

答案 0 :(得分:0)

fopen64在32位上定义,允许64位操作。但是在cygwin 64位上它应该被fopen取代。

添加一些

#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

将为cygwin构建lib / libxgboost.dll。