clang: error: : errorunsupported option '-fopenmp' on Mac OSX El Capitan building XGBoost
clang: error: : errorunsupported option '-fopenmp' on Mac OSX El Capitan building XGBoost
我正在尝试构建 XGBoost package for Python following these instructions:
Here is the complete solution to use OpenMP-enabled compilers to install XGBoost. Obtain gcc-5.x.x with openmp support by brew install gcc --without-multilib
. (brew is the de facto standard of apt-get on OS X. So installing HPC separately is not recommended, but it should work.):
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost; cp make/config.mk ./config.mk; make -j4
此错误恰好发生在 make -j4
命令中。
搜索之前,我已经尝试了这两个解决方案(1 and 2),但无济于事,除了安装另一个 gcc 的部分,因为害怕弄乱一切。
下面是make
配置文件。它有 none 可疑之处。
#-----------------------------------------------------
# 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
您使用 Homebrew 安装了 gcc
,但错误来自 clang
。那应该只是意味着您的默认编译器仍然指向 clang
而不是新安装的 gcc
。如果您阅读 Makefile 中的注释,您将看到以下几行:
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
在你的情况下,你不需要系统。
注:gcc
为系统指向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
相反,将这些变量指向 /usr/local/bin
中的内容,例如:
$ export CC=/usr/local/bin/gcc
和其他两个变量类似,CXX
和MPICXX
,例如:
$ export CC=/usr/local/bin/gcc;CXX=/usr/local/bin/g++;MPICXX=/usr/local/bin/mpicxx
先生,也许您应该使用
cd xgboost; cp make/minimum.mk ./config.mk; make -j4
而不是
cd xgboost; cp make/config.mk ./config.mk; make -j4
的 "Build On OSX" 部分
为了解决这个问题,我做了以下事情:我意识到我已经安装了 gcc
6,所以我 运行:
export CC=gcc-6
但它本身并没有起作用,所以我也不得不:
export CXX=g++-6
这为我解决了。我在 Macbook Pro 运行 macOS Sierra 中。如果需要,您也可以直接在 XGBoost 的 Makefile 上进行这些更改。有关此的更多信息:https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_on_Mac_OSX?lang=en
无法编译本机 libxgboost.dylib 库,也许检查这个 workaround
我正在尝试构建 XGBoost package for Python following these instructions:
Here is the complete solution to use OpenMP-enabled compilers to install XGBoost. Obtain gcc-5.x.x with openmp support by
brew install gcc --without-multilib
. (brew is the de facto standard of apt-get on OS X. So installing HPC separately is not recommended, but it should work.):
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost; cp make/config.mk ./config.mk; make -j4
此错误恰好发生在 make -j4
命令中。
搜索之前,我已经尝试了这两个解决方案(1 and 2),但无济于事,除了安装另一个 gcc 的部分,因为害怕弄乱一切。
下面是make
配置文件。它有 none 可疑之处。
#-----------------------------------------------------
# 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
您使用 Homebrew 安装了 gcc
,但错误来自 clang
。那应该只是意味着您的默认编译器仍然指向 clang
而不是新安装的 gcc
。如果您阅读 Makefile 中的注释,您将看到以下几行:
# choice of compiler, by default use system preference.
# export CC = gcc
# export CXX = g++
# export MPICXX = mpicxx
在你的情况下,你不需要系统。
注:gcc
为系统指向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
相反,将这些变量指向 /usr/local/bin
中的内容,例如:
$ export CC=/usr/local/bin/gcc
和其他两个变量类似,CXX
和MPICXX
,例如:
$ export CC=/usr/local/bin/gcc;CXX=/usr/local/bin/g++;MPICXX=/usr/local/bin/mpicxx
先生,也许您应该使用
cd xgboost; cp make/minimum.mk ./config.mk; make -j4
而不是
的 "Build On OSX" 部分cd xgboost; cp make/config.mk ./config.mk; make -j4
为了解决这个问题,我做了以下事情:我意识到我已经安装了 gcc
6,所以我 运行:
export CC=gcc-6
但它本身并没有起作用,所以我也不得不:
export CXX=g++-6
这为我解决了。我在 Macbook Pro 运行 macOS Sierra 中。如果需要,您也可以直接在 XGBoost 的 Makefile 上进行这些更改。有关此的更多信息:https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_on_Mac_OSX?lang=en
无法编译本机 libxgboost.dylib 库,也许检查这个 workaround