wake-up-neo.com

clang: error:: error nicht unterstützte Option '-fopenmp' unter Mac OS X El Capitan beim Erstellen von XGBoost

Ich versuche, ein XGBoost -Paket für Python nach diesen Anweisungen zu erstellen:

Hier finden Sie die vollständige Lösung für die Verwendung von OpenMP-fähigen Compilern zur Installation von XGBoost. Besorgen Sie sich gcc-5.x.x mit openmp-Unterstützung von brew install gcc --without-multilib. (brew ist der De-facto-Standard von apt-get unter OS X. Daher wird die separate Installation von HPC nicht empfohlen, sollte aber funktionieren.):

git clone --recursive https://github.com/dmlc/xgboost
cd xgboost; cp make/config.mk ./config.mk; make -j4

Dieser Fehler tritt genau in der make -j4 Befehl.

Ich habe vorab nach diesen beiden Lösungen gesucht ( 1 und 2 ), ohne Erfolg, mit Ausnahme des Teils, in dem ich einen anderen gcc installiert habe, weil ich Angst hatte, alles durcheinander zu bringen.

Unten ist die Konfigurationsdatei make. Es hat keinen Verdacht.

#-----------------------------------------------------
#  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
23
srodriguex

Du hast gcc mit Homebrew installiert, aber der Fehler ist von clang. Das sollte einfach bedeuten, dass Ihr Standard-Compiler immer noch auf clang anstelle des neu installierten gcc zeigt. Wenn Sie die Kommentare im Makefile lesen, sehen Sie die folgenden Zeilen:

# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx

und in Ihrem Fall möchten Sie nicht das System ein.
Hinweis: gcc für das System zeigt auf 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

Zeigen Sie stattdessen diese Variablen auf etwas in /usr/local/bin, z.B.:

$ export CC=/usr/local/bin/gcc

und ähnlich für die anderen zwei Variablen, CXX und MPICXX, z.

$ export CC=/usr/local/bin/gcc;CXX=/usr/local/bin/g++;MPICXX=/usr/local/bin/mpicxx
32
user707650

Sir, vielleicht sollten Sie verwenden

cd xgboost; cp make/minimum.mk ./config.mk; mache -j4

anstatt von

cd xgboost; cp make/config.mk ./config.mk; mache -j4

gemäß dem Abschnitt "Build On OSX" von Build Document

9

Um dieses Problem zu lösen, habe ich Folgendes ausgeführt: Ich habe festgestellt, dass gcc 6 installiert ist, und habe Folgendes ausgeführt:

export CC=gcc-6

Aber es hat nicht von alleine funktioniert, also musste ich auch:

export CXX=g++-6

Das hat es für mich gelöst. Ich arbeite in einem Macbook Pro mit macOS Sierra. Sie können diese Änderungen auch direkt in XGBoosts Makefile vornehmen, wenn Sie möchten. Weitere Informationen hierzu: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_on_Mac_OSX?lang=en