J'essaie de construire XGBoost package pour Python suivant ces instructions :
Voici la solution complète pour utiliser des compilateurs compatibles OpenMP pour installer XGBoost. Obtenez gcc-5.x.x avec le support openmp par
brew install gcc --without-multilib
. (brew est la norme de facto d'apt-get sur OS X. Il n'est donc pas recommandé d'installer HPC séparément, mais cela devrait fonctionner.):
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost; cp make/config.mk ./config.mk; make -j4
Cette erreur se produit précisément dans le make -j4
commande.
En recherchant avant, j'ai essayé ces deux solutions ( 1 et 2 ), en vain, sauf pour la partie d'installer un autre gcc par peur de tout gâcher.
Ci-dessous se trouve le fichier de configuration make
. Cela n'a rien de suspect.
#-----------------------------------------------------
# xgboost: the configuration compile script
#
# If you want to change the configuration, please use the following
# steps. Assume you are on the root directory of xgboost.
# First copy the this file so that any local changes will be ignored by git
#
# $ cp make/config.mk .
#
# Next modify the according entries, and then compile by
#
# $ make
#
# or build in parallel with 8 threads
#
# $ make -j8
#----------------------------------------------------
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
# the additional link flags you want to add
ADD_LDFLAGS =
# the additional compile flags you want to add
ADD_CFLAGS =
# Whether enable openmp support, needed for multi-threading.
USE_OPENMP = 1
# whether use HDFS support during compile
USE_HDFS = 0
# whether use AWS S3 support during compile
USE_S3 = 0
# whether use Azure blob support during compile
USE_Azure = 0
# Rabit library version,
# - librabit.a Normal distributed version.
# - librabit_empty.a Non distributed mock version,
LIB_RABIT = librabit.a
# path to libjvm.so
LIBJVM=$(Java_HOME)/jre/lib/AMD64/server
# List of additional plugins, checkout plugin folder.
# uncomment the following lines to include these plugins
# you can also add your own plugin like this
#
# XGB_PLUGINS += plugin/example/plugin.mk
Vous avez installé gcc
avec Homebrew, mais l'erreur provient de clang
. Cela devrait simplement signifier que votre compilateur par défaut pointe toujours vers clang
au lieu du gcc
nouvellement installé. Si vous lisez les commentaires dans le Makefile, vous verrez les lignes suivantes:
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
et dans votre cas, vous ne voulez pas du système.
Remarque: gcc
pour le système pointe vers clang
:
$ which gcc
/usr/bin/gcc
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-Apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Au lieu de cela, pointez ces variables vers quelque chose dans /usr/local/bin
, par exemple.:
$ export CC=/usr/local/bin/gcc
et similaire pour les deux autres variables, CXX
et MPICXX
, par exemple:
$ export CC=/usr/local/bin/gcc;CXX=/usr/local/bin/g++;MPICXX=/usr/local/bin/mpicxx
Monsieur, vous devriez peut-être utiliser
cd xgboost; cp make/minimum.mk ./config.mk; faire -j4
au lieu de
cd xgboost; cp make/config.mk ./config.mk; faire -j4
selon la section "Build On OSX" de document de build
Pour résoudre ce problème, j'ai fait ce qui suit: j'ai réalisé que j'avais gcc
6 installé, alors j'ai exécuté:
export CC=gcc-6
Mais cela n'a pas fonctionné par lui-même, j'ai donc dû aussi:
export CXX=g++-6
Cela l'a résolu pour moi. Je suis dans un Macbook Pro exécutant macOS Sierra. Vous pouvez également apporter ces modifications directement sur le Makefile de XGBoost si vous le souhaitez. Pour plus d'informations à ce sujet: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_on_Mac_OSX?lang=en