Первоначально описано здесь , некоторые пользователи OS X, такие как я, получают странную ошибку "ld: framework not found R" при попытке установить многопоточную версию xgboost из исходного кода.После некоторого Google, я начинаю верить, что проблема касается моей установки R, а не xgboost (на основе ссылка 1 , ссылка 2 и ссылка 3 ).Однако я несколько раз переустанавливал R (v 3.6.0), но безрезультатно.
Вот мои шаги по установке:
1.Обновите cmake и gcc
brew upgrade cmake # version 3.14.3
brew upgrade gcc # version 8.3.0_2
2.Клон репо
cd ~/Documents/Projects/R
git clone --recursive https://github.com/dmlc/xgboost
Cloning into 'xgboost'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 28460 (delta 7), reused 7 (delta 4), pack-reused 28444
Receiving objects: 100% (28460/28460), 10.78 MiB | 1.42 MiB/s, done.
Resolving deltas: 100% (16806/16806), done.
Submodule 'cub' (https://github.com/NVlabs/cub) registered for path 'cub'
Submodule 'dmlc-core' (https://github.com/dmlc/dmlc-core) registered for path 'dmlc-core'
Submodule 'rabit' (https://github.com/dmlc/rabit) registered for path 'rabit'
Cloning into '/Users/bgorman/Documents/Projects/R/xgboost/cub'...
remote: Enumerating objects: 32671, done.
remote: Total 32671 (delta 0), reused 0 (delta 0), pack-reused 32671
Receiving objects: 100% (32671/32671), 16.53 MiB | 657.00 KiB/s, done.
Resolving deltas: 100% (28644/28644), done.
Cloning into '/Users/bgorman/Documents/Projects/R/xgboost/rabit'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 3313 (delta 7), reused 12 (delta 3), pack-reused 3283
Receiving objects: 100% (3313/3313), 977.69 KiB | 360.00 KiB/s, done.
Resolving deltas: 100% (2145/2145), done.
Cloning into '/Users/bgorman/Documents/Projects/R/xgboost/dmlc-core'...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 5617 (delta 11), reused 17 (delta 6), pack-reused 5574
Receiving objects: 100% (5617/5617), 1.43 MiB | 426.00 KiB/s, done.
Resolving deltas: 100% (3386/3386), done.
Submodule path 'cub': checked out 'b20808b1b04ec3d6a625e51fbc1eb76f337754ad'
Submodule path 'dmlc-core': checked out 'c45451793caec59c06a71d4c0eed59a34601e7ea'
Submodule path 'rabit': checked out 'a429748e244f67f6f144a697f3aa1b1978705b11'
3.Создайте каталог сборки
cd xgboost/
mkdir build
cd build
4.cmake
CC=gcc-8 CXX=g++-8 cmake .. -DR_LIB=ON
-- The CXX compiler identification is GNU 8.3.0
-- The C compiler identification is GNU 8.3.0
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- Check for working CXX compiler: /usr/local/bin/g++-8
-- Check for working CXX compiler: /usr/local/bin/g++-8 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /usr/local/bin/gcc-8
-- Check for working C compiler: /usr/local/bin/gcc-8 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- CMake version 3.14.3
-- Setting build type to 'Release' as none was specified.
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Looking for fopen64
-- Looking for fopen64 - not found
-- Looking for C++ include cxxabi.h
-- Looking for C++ include cxxabi.h - found
-- Looking for nanosleep
-- Looking for nanosleep - found
-- Looking for backtrace
-- Looking for backtrace - found
-- backtrace facility detected in default set of libraries
-- Found Backtrace: /usr/include
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- /Users/bgorman/Documents/Projects/R/xgboost/dmlc-core/cmake/build_config.h.in -> /Users/bgorman/Documents/Projects/R/xgboost/dmlc-core/include/dmlc/build_config.h
-- Performing Test SUPPORT_CXX11
-- Performing Test SUPPORT_CXX11 - Success
-- Performing Test SUPPORT_CXX0X
-- Performing Test SUPPORT_CXX0X - Success
-- Performing Test SUPPORT_MSSE2
-- Performing Test SUPPORT_MSSE2 - Success
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found LibR: /Library/Frameworks/R.framework/Resources
-- Found R: /Library/Frameworks/R.framework/Resources/R
-- LIBR_CORE_LIBRARY /Library/Frameworks/R.framework
-- Performing Test XGBOOST_MM_PREFETCH_PRESENT
-- Performing Test XGBOOST_MM_PREFETCH_PRESENT - Success
-- Performing Test XGBOOST_BUILTIN_PREFETCH_PRESENT
-- Performing Test XGBOOST_BUILTIN_PREFETCH_PRESENT - Success
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/bgorman/Documents/Projects/R/xgboost/build
5.make -j4 (здесь возникает ошибка)
make -j4
Scanning dependencies of target rabit
Scanning dependencies of target dmlc
Scanning dependencies of target xgboost-r
Scanning dependencies of target objxgboost
[ 1%] Building CXX object CMakeFiles/rabit.dir/rabit/src/engine_empty.cc.o
[ 3%] Building C object R-package/CMakeFiles/xgboost-r.dir/src/init.c.o
[ 4%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/build_config.cc.o
[ 6%] Building CXX object src/CMakeFiles/objxgboost.dir/c_api/c_api.cc.o
[ 7%] Building CXX object R-package/CMakeFiles/xgboost-r.dir/src/xgboost_R.cc.o
/Users/bgorman/Documents/Projects/R/xgboost/dmlc-core/src/build_config.cc:14:6: warning: #warning "Redefining fopen64 with std::fopen" [-Wcpp]
#warning "Redefining fopen64 with std::fopen"
^~~~~~~
[ 9%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/config.cc.o
[ 11%] Building CXX object CMakeFiles/rabit.dir/rabit/src/c_api.cc.o
[ 12%] Building C object R-package/CMakeFiles/xgboost-r.dir/src/xgboost_assert.c.o
[ 14%] Building CXX object R-package/CMakeFiles/xgboost-r.dir/src/xgboost_custom.cc.o
[ 15%] Linking CXX static library librabit.a
[ 17%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/data.cc.o
[ 17%] Built target rabit
[ 19%] Building CXX object src/CMakeFiles/objxgboost.dir/c_api/c_api_error.cc.o
[ 20%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io.cc.o
[ 20%] Built target xgboost-r
[ 22%] Building CXX object src/CMakeFiles/objxgboost.dir/common/common.cc.o
[ 23%] Building CXX object src/CMakeFiles/objxgboost.dir/common/hist_util.cc.o
[ 25%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/recordio.cc.o
[ 26%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/line_split.cc.o
[ 28%] Building CXX object src/CMakeFiles/objxgboost.dir/common/host_device_vector.cc.o
[ 30%] Building CXX object src/CMakeFiles/objxgboost.dir/data/data.cc.o
[ 31%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/recordio_split.cc.o
[ 33%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/indexed_recordio_split.cc.o
[ 34%] Building CXX object src/CMakeFiles/objxgboost.dir/data/simple_csr_source.cc.o
[ 36%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/input_split_base.cc.o
[ 38%] Building CXX object src/CMakeFiles/objxgboost.dir/data/simple_dmatrix.cc.o
[ 39%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/filesys.cc.o
[ 41%] Building CXX object src/CMakeFiles/objxgboost.dir/data/sparse_page_dmatrix.cc.o
[ 42%] Building CXX object dmlc-core/CMakeFiles/dmlc.dir/src/io/local_filesys.cc.o
[ 44%] Building CXX object src/CMakeFiles/objxgboost.dir/data/sparse_page_raw_format.cc.o
[ 46%] Building CXX object src/CMakeFiles/objxgboost.dir/data/sparse_page_source.cc.o
[ 47%] Building CXX object src/CMakeFiles/objxgboost.dir/data/sparse_page_writer.cc.o
[ 49%] Linking CXX static library libdmlc.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libdmlc.a(build_config.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libdmlc.a(build_config.cc.o) has no symbols
[ 49%] Built target dmlc
[ 50%] Building CXX object src/CMakeFiles/objxgboost.dir/gbm/gblinear.cc.o
[ 52%] Building CXX object src/CMakeFiles/objxgboost.dir/gbm/gbm.cc.o
[ 53%] Building CXX object src/CMakeFiles/objxgboost.dir/gbm/gbtree.cc.o
[ 55%] Building CXX object src/CMakeFiles/objxgboost.dir/learner.cc.o
[ 57%] Building CXX object src/CMakeFiles/objxgboost.dir/linear/linear_updater.cc.o
[ 58%] Building CXX object src/CMakeFiles/objxgboost.dir/linear/updater_coordinate.cc.o
[ 60%] Building CXX object src/CMakeFiles/objxgboost.dir/linear/updater_shotgun.cc.o
[ 61%] Building CXX object src/CMakeFiles/objxgboost.dir/logging.cc.o
[ 63%] Building CXX object src/CMakeFiles/objxgboost.dir/metric/elementwise_metric.cc.o
[ 65%] Building CXX object src/CMakeFiles/objxgboost.dir/metric/metric.cc.o
[ 66%] Building CXX object src/CMakeFiles/objxgboost.dir/metric/multiclass_metric.cc.o
[ 68%] Building CXX object src/CMakeFiles/objxgboost.dir/metric/rank_metric.cc.o
[ 69%] Building CXX object src/CMakeFiles/objxgboost.dir/objective/hinge.cc.o
[ 71%] Building CXX object src/CMakeFiles/objxgboost.dir/objective/multiclass_obj.cc.o
[ 73%] Building CXX object src/CMakeFiles/objxgboost.dir/objective/objective.cc.o
[ 74%] Building CXX object src/CMakeFiles/objxgboost.dir/objective/rank_obj.cc.o
[ 76%] Building CXX object src/CMakeFiles/objxgboost.dir/objective/regression_obj.cc.o
[ 77%] Building CXX object src/CMakeFiles/objxgboost.dir/predictor/cpu_predictor.cc.o
[ 79%] Building CXX object src/CMakeFiles/objxgboost.dir/predictor/predictor.cc.o
[ 80%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/split_evaluator.cc.o
[ 82%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/tree_model.cc.o
[ 84%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/tree_updater.cc.o
[ 85%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_colmaker.cc.o
[ 87%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_histmaker.cc.o
[ 88%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_prune.cc.o
[ 90%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_quantile_hist.cc.o
[ 92%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_refresh.cc.o
[ 93%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_skmaker.cc.o
[ 95%] Building CXX object src/CMakeFiles/objxgboost.dir/tree/updater_sync.cc.o
[ 95%] Built target objxgboost
Scanning dependencies of target xgboost
Scanning dependencies of target runxgboost
[ 96%] Linking CXX shared library ../lib/xgboost.so
[ 98%] Building CXX object CMakeFiles/runxgboost.dir/src/cli_main.cc.o
ld: framework not found R
collect2: error: ld returned 1 exit status
make[2]: *** [../lib/xgboost.so] Error 1
make[1]: *** [CMakeFiles/xgboost.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX executable ../xgboost
ld: framework not found R
collect2: error: ld returned 1 exit status
make[2]: *** [../xgboost] Error 1
make[1]: *** [CMakeFiles/runxgboost.dir/all] Error 2
make: *** [all] Error 2
Есть идеи или предложения по устранению этой проблемы?
ОБНОВЛЕНИЕ:
После удаления R и переустановки с brew install r
,Я смог успешно установить xgboost.Я не уверен, почему установка homebrew работает, но двоичный файл для os x на CRAN не работает.Я оставлю вопрос открытым, если кто-то захочет найти ответ.