Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

failed to compile on mac os #2259

Closed
fangaohz opened this issue Jul 10, 2019 · 9 comments
Closed

failed to compile on mac os #2259

fangaohz opened this issue Jul 10, 2019 · 9 comments

Comments

@fangaohz
Copy link

I tried to install lightGBM on mac and failed to compile it.

`
Scanning dependencies of target lightgbm
Scanning dependencies of target _lightgbm
[ 4%] Building CXX object CMakeFiles/lightgbm.dir/src/main.cpp.o
[ 4%] Building CXX object CMakeFiles/_lightgbm.dir/src/c_api.cpp.o
[ 4%] Building CXX object CMakeFiles/lightgbm.dir/src/application/application.cpp.o
[ 6%] Building CXX object CMakeFiles/_lightgbm.dir/src/lightgbm_R.cpp.o
[ 7%] Building CXX object CMakeFiles/_lightgbm.dir/src/application/application.cpp.o
[ 9%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/boosting.cpp.o
[ 11%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/boosting.cpp.o
[ 12%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt.cpp.o
[ 14%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt_model_text.cpp.o
[ 15%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt.cpp.o
[ 17%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt_model_text.cpp.o
[ 19%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/gbdt_prediction.cpp.o
[ 20%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/gbdt_prediction.cpp.o
[ 22%] Building CXX object CMakeFiles/lightgbm.dir/src/boosting/prediction_early_stop.cpp.o
[ 23%] Building CXX object CMakeFiles/_lightgbm.dir/src/boosting/prediction_early_stop.cpp.o
[ 25%] Building CXX object CMakeFiles/lightgbm.dir/src/io/bin.cpp.o
[ 26%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/bin.cpp.o
[ 28%] Building CXX object CMakeFiles/lightgbm.dir/src/io/config.cpp.o
[ 30%] Building CXX object CMakeFiles/lightgbm.dir/src/io/config_auto.cpp.o
[ 31%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/config.cpp.o
[ 33%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/config_auto.cpp.o
[ 34%] Building CXX object CMakeFiles/lightgbm.dir/src/io/dataset.cpp.o
[ 36%] Building CXX object CMakeFiles/lightgbm.dir/src/io/dataset_loader.cpp.o
[ 38%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/dataset.cpp.o
[ 39%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/dataset_loader.cpp.o
[ 41%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/file_io.cpp.o
[ 42%] Building CXX object CMakeFiles/lightgbm.dir/src/io/file_io.cpp.o
[ 44%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/json11.cpp.o
[ 46%] Building CXX object CMakeFiles/lightgbm.dir/src/io/json11.cpp.o
[ 47%] Building CXX object CMakeFiles/lightgbm.dir/src/io/metadata.cpp.o
[ 49%] Building CXX object CMakeFiles/lightgbm.dir/src/io/parser.cpp.o
[ 50%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/metadata.cpp.o
[ 52%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/parser.cpp.o
[ 53%] Building CXX object CMakeFiles/_lightgbm.dir/src/io/tree.cpp.o
[ 55%] Building CXX object CMakeFiles/lightgbm.dir/src/io/tree.cpp.o
[ 57%] Building CXX object CMakeFiles/lightgbm.dir/src/metric/dcg_calculator.cpp.o
[ 58%] Building CXX object CMakeFiles/lightgbm.dir/src/metric/metric.cpp.o
[ 60%] Building CXX object CMakeFiles/_lightgbm.dir/src/metric/dcg_calculator.cpp.o
[ 61%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linker_topo.cpp.o
[ 63%] Building CXX object CMakeFiles/_lightgbm.dir/src/metric/metric.cpp.o
[ 65%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linker_topo.cpp.o
[ 66%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linkers_mpi.cpp.o
[ 68%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linkers_mpi.cpp.o
[ 69%] Building CXX object CMakeFiles/lightgbm.dir/src/network/linkers_socket.cpp.o
[ 71%] Building CXX object CMakeFiles/lightgbm.dir/src/network/network.cpp.o
[ 73%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/linkers_socket.cpp.o
[ 74%] Building CXX object CMakeFiles/_lightgbm.dir/src/network/network.cpp.o
[ 76%] Building CXX object CMakeFiles/lightgbm.dir/src/objective/objective_function.cpp.o
[ 77%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/data_parallel_tree_learner.cpp.o
[ 79%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/feature_parallel_tree_learner.cpp.o
[ 80%] Building CXX object CMakeFiles/_lightgbm.dir/src/objective/objective_function.cpp.o
[ 82%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/data_parallel_tree_learner.cpp.o
[ 84%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/feature_parallel_tree_learner.cpp.o
[ 85%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/gpu_tree_learner.cpp.o
[ 87%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/gpu_tree_learner.cpp.o
[ 88%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/serial_tree_learner.cpp.o
[ 90%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/tree_learner.cpp.o
[ 92%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/serial_tree_learner.cpp.o
[ 93%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/tree_learner.cpp.o
[ 95%] Building CXX object CMakeFiles/lightgbm.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
[ 96%] Building CXX object CMakeFiles/_lightgbm.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
[ 98%] Linking CXX executable ../lightgbm
Undefined symbols for architecture x86_64:
"_GOMP_atomic_end", referenced from:
LightGBM::RegressionL2loss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::Init(LightGBM::Metadata const&, int) [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropy::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropyLambda::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::LeafSplits::Init(float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
LightGBM::LeafSplits::Init(int, LightGBM::DataPartition const*, float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
...
"_GOMP_atomic_start", referenced from:
LightGBM::RegressionL2loss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::Init(LightGBM::Metadata const&, int) [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropy::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropyLambda::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::LeafSplits::Init(float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
LightGBM::LeafSplits::Init(int, LightGBM::DataPartition const*, float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
...
"_GOMP_loop_end_nowait", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_loop_nonmonotonic_guided_next", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_loop_nonmonotonic_guided_start", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_parallel", referenced from:
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) in application.cpp.o
std::_Function_handler<void (int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&), LightGBM::Predictor::Predict(char const*, char const*, bool)::{lambda(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)#2}>::_M_invoke(std::_Any_data const&, int&&, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&) in application.cpp.o
LightGBM::Application::Predict() in application.cpp.o
LightGBM::GBDT::InitPredict(int, bool) in boosting.cpp.o
LightGBM::RF::AddValidDataset(LightGBM::Dataset const*, std::vector<LightGBM::Metric const*, std::allocator<LightGBM::Metric const*> > const&) in boosting.cpp.o
LightGBM::RF::RollbackOneIter() in boosting.cpp.o
LightGBM::GOSS::Bagging(int) in boosting.cpp.o
...
"_omp_get_num_threads", referenced from:
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) [clone ._omp_fn.0] in application.cpp.o
LightGBM::Predictor::Predict(char const*, char const*, bool)::{lambda(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)#2}::operator()(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&) const [clone ._omp_fn.0] in application.cpp.o
LightGBM::Application::Predict() [clone ._omp_fn.0] in application.cpp.o
LightGBM::GBDT::InitPredict(int, bool) [clone ._omp_fn.0] in boosting.cpp.o
LightGBM::Tree::Shrinkage(double) [clone ._omp_fn.0] in boosting.cpp.o
LightGBM::GOSS::Bagging(int) [clone ._omp_fn.1] in boosting.cpp.o
LightGBM::RF::Boosting() [clone ._omp_fn.0] in boosting.cpp.o
...
"_omp_get_thread_num", referenced from:
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) [clone ._omp_fn.0] in application.cpp.o
std::_Function_handler<void (std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*), LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double)::{lambda(std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*)#2}>::_M_invoke(std::_Any_data const&, std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*&&) in application.cpp.o
LightGBM::Predictor::Predict(char const*, char const*, bool)::{lambda(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)#2}::operator()(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&) const [clone ._omp_fn.0] in application.cpp.o
LightGBM::Application::Predict() [clone ._omp_fn.0] in application.cpp.o
std::_Function_handler<void (std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*), LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double)::{lambda(std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*)#4}>::_M_invoke(std::_Any_data const&, std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*&&) in application.cpp.o
std::_Function_handler<void (std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*), LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double)::{lambda(std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*)#3}>::_M_invoke(std::_Any_data const&, std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*&&) in application.cpp.o
std::_Function_handler<void (std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*), LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double)::{lambda(std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*&&) in application.cpp.o
...
"_omp_set_nested", referenced from:
LightGBM::Application::Application(int, char**) in application.cpp.o
"_omp_set_num_threads", referenced from:
LightGBM::Application::Application(int, char**) in application.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [../lightgbm] Error 1
make[1]: *** [CMakeFiles/lightgbm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX shared library ../lib_lightgbm.so
Undefined symbols for architecture x86_64:
"_GOMP_atomic_end", referenced from:
LightGBM::RegressionL2loss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::Init(LightGBM::Metadata const&, int) [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropy::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropyLambda::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::LeafSplits::Init(float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
LightGBM::LeafSplits::Init(int, LightGBM::DataPartition const*, float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
...
"_GOMP_atomic_start", referenced from:
LightGBM::RegressionL2loss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::BinaryLogloss::Init(LightGBM::Metadata const&, int) [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropy::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::CrossEntropyLambda::BoostFromScore(int) const [clone ._omp_fn.0] in objective_function.cpp.o
LightGBM::LeafSplits::Init(float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
LightGBM::LeafSplits::Init(int, LightGBM::DataPartition const*, float const*, float const*) [clone ._omp_fn.0] in serial_tree_learner.cpp.o
...
"_GOMP_loop_end_nowait", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_loop_nonmonotonic_guided_next", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_loop_nonmonotonic_guided_start", referenced from:
LightGBM::Dataset::FinishLoad() [clone ._omp_fn.0] in dataset.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::CostructFromSampleData(double**, int**, int, int const*, unsigned long, int) [clone ._omp_fn.1] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.0] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.2] in dataset_loader.cpp.o
LightGBM::DatasetLoader::ConstructBinMappersFromTextData(int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&, LightGBM::Parser const*, LightGBM::Dataset*) [clone ._omp_fn.1] in dataset_loader.cpp.o
...
"_GOMP_parallel", referenced from:
_LGBM_DatasetPushRows in c_api.cpp.o
_LGBM_DatasetPushRowsByCSR in c_api.cpp.o
std::_Function_handler<void (int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&), LightGBM::Predictor::Predict(char const*, char const*, bool)::{lambda(int, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&)#2}>::_M_invoke(std::_Any_data const&, int&&, std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&) in c_api.cpp.o
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) in c_api.cpp.o
LightGBM::Booster::Predict(int, int, int, std::function<std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > (int)>, LightGBM::Config const&, double*, long long*) in c_api.cpp.o
_LGBM_DatasetCreateFromCSR in c_api.cpp.o
_LGBM_DatasetCreateFromCSRFunc in c_api.cpp.o
...
"_omp_get_num_threads", referenced from:
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) [clone ._omp_fn.0] in c_api.cpp.o
_LGBM_BoosterPredictForCSC._omp_fn.0 in c_api.cpp.o
LightGBM::Booster::Predict(int, int, int, std::function<std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > (int)>, LightGBM::Config const&, double*, long long*) [clone ._omp_fn.0] in c_api.cpp.o
_LGBM_DatasetPushRows._omp_fn.0 in c_api.cpp.o
_LGBM_DatasetCreateFromMats._omp_fn.0 in c_api.cpp.o
_LGBM_DatasetPushRowsByCSR._omp_fn.0 in c_api.cpp.o
_LGBM_DatasetCreateFromCSR._omp_fn.0 in c_api.cpp.o
...
"_omp_get_thread_num", referenced from:
LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double) [clone ._omp_fn.0] in c_api.cpp.o
_LGBM_BoosterPredictForCSC._omp_fn.0 in c_api.cpp.o
std::_Function_handler<void (std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*), LightGBM::Predictor::Predictor(LightGBM::Boosting*, int, bool, bool, bool, bool, int, double)::{lambda(std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*)#2}>::_M_invoke(std::_Any_data const&, std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > const&, double*&&) in c_api.cpp.o
LightGBM::Booster::Predict(int, int, int, std::function<std::vector<std::pair<int, double>, std::allocator<std::pair<int, double> > > (int)>, LightGBM::Config const&, double*, long long*) [clone ._omp_fn.0] in c_api.cpp.o
_LGBM_DatasetPushRows._omp_fn.0 in c_api.cpp.o
_LGBM_DatasetCreateFromMats._omp_fn.0 in c_api.cpp.o
_LGBM_DatasetPushRowsByCSR._omp_fn.0 in c_api.cpp.o
...
"_omp_set_nested", referenced from:
LightGBM::Application::Application(int, char**) in application.cpp.o
"_omp_set_num_threads", referenced from:
_LGBM_DatasetCreateFromFile in c_api.cpp.o
_LGBM_DatasetCreateFromSampledColumn in c_api.cpp.o
_LGBM_BoosterPredictForCSR in c_api.cpp.o
_LGBM_BoosterPredictForMat in c_api.cpp.o
_LGBM_BoosterPredictForMats in c_api.cpp.o
_LGBM_BoosterPredictForCSRSingleRow in c_api.cpp.o
_LGBM_BoosterPredictForMatSingleRow in c_api.cpp.o
...
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [../lib_lightgbm.so] Error 1
make[1]: *** [CMakeFiles/_lightgbm.dir/all] Error 2
make: *** [all] Error 2

`

Does anyone know how to solve this error?

@StrikerRUS
Copy link
Collaborator

@fangaohz Please provide your system info and steps which led to this error.

@brandenkmurray
Copy link

brandenkmurray commented Jul 23, 2019

I was getting the same error.

I changed
export CXX=/usr/local/bin/g++-8 CC=/usr/local/bin/gcc-8
to
export CXX=g++-8 CC=gcc-8

and it worked.

@jameslamb
Copy link
Collaborator

Thanks @brandenkmurray

Yeah this depends on the way you installed g++. That location in our docs (/usr/local/bin/g++-8) is where homebrew will put it if you brew install g++. If you get it from some other source and that source is the one found by which g++, then your change will work!

We still need @fangaohz 's environment information though. From the log, I'm unsure whether clang or g++ is being used.

@brandenkmurray
Copy link

brandenkmurray commented Jul 23, 2019

That's the weird thing. I installed via homebrew and they point to the location in the docs, yet it doesn't work if I export the full paths.

bmurray:/Documents/LightGBM$ which gcc-8
/usr/local/bin/gcc-8
bmurray:/Documents/LightGBM$ which g++-8
/usr/local/bin/g++-8

@jameslamb
Copy link
Collaborator

That's so weird 🤔

either way, @fangaohz please let us know if you can share more about your environment + the steps you ran to get to this error and we'll be happy to take a look at this!

@jameslamb
Copy link
Collaborator

jameslamb commented Aug 18, 2019

I was able to reproduce this error tonight AND @brandenkmurray 's suggested workaround works for me.

I was able to reproduce (with the R package specifically) by cloning the most recent master and then running

Rscript build_r.R
R sessionInfo()

R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14.5

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

LightGBM commit: 686b0cc (most recent on master)

compiler versions

image

I will look into this (sorry for such a long delay!). The only reason I can think of for this behavior (given that which g++ returns the /usr/local/bin/g++-8) is that somewhere we have code that switches based on the literal string value of CC or CXX. I did a cursory scan of CMakeLists.txt and didn't see anything, but I'll do a more thorough search soon and respond here with what I find.

@brandenkmurray
Copy link

@jameslamb This looks like it could be the offending line:

if (Sys.info()['sysname'] == 'Darwin' && !(grepl('^gcc', Sys.getenv('CC', '')) & grepl('^g\\+\\+', Sys.getenv('CXX', '')))) {

It's looking for gcc and g++ to be at the beginning of the string.

Changing to grepl('gcc-[6-8]$', Sys.getenv('CC', '')) and grepl('g\\+\\+-[6-8]$', Sys.getenv('CXX', '')) works (just using "[6-8]" as an example, change the "[6-8]" to whatever versions are allowable).

@jameslamb
Copy link
Collaborator

@brandenkmurray Oh great, thanks! That definitely seems like it could be the culprit. Let me try and if that works for me, I'll open a PR with the change.

@jameslamb
Copy link
Collaborator

Just opened #2339 , I hope it fixes it! Thanks for the help.

@fangaohz if you find time to come back to this issue and tell us your original report was not from running the R package, we will re-open the issue. Thanks for reporting!

@lock lock bot locked as resolved and limited conversation to collaborators Mar 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants