我正在尝试通过scip优化套件安装Scip。我用Cmake构建scip,Cmake部分工作得很好。当我执行make命令时,出现以下错误。
Undefined symbols for architecture x86_64:
"tbb::interface5::internal::task_base::destroy(tbb::task&)", referenced from:
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::compress(bool)::'lambda'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda0'()>(double const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::compress(bool)::'lambda1'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda3'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda5'()>(double const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda1'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda3'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda'(), papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda0'()>(double const&, papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda1'(), papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda2'()>(double const&, papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda1'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda3'(), papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda4'()>(double const&, papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)::'lambda3'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda'(), papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda0'()>(boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> const&, papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
void tbb::parallel_invoke<papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda1'(), papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda2'(), papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda3'(), papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda4'(), papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda5'()>(boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> const&, papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda1'() const&, papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda2'() const&, papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda3'() const&, papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1> >::compress(bool)::'lambda4'() const&, tbb::task_group_context&) in libpapilo-core.a(ConstraintMatrix.cpp.o)
...
[...]
"typeinfo for tbb::task", referenced from:
typeinfo for tbb::empty_task in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::function_invoker<papilo::ConstraintMatrix<double>::compress(bool)::'lambda0'()> in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::function_invoker<papilo::ConstraintMatrix<double>::compress(bool)::'lambda'()> in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::spawner<2ul, papilo::ConstraintMatrix<double>::compress(bool)::'lambda5'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'(), tbb::internal::parallel_invoke_helper::parallel_invoke_noop> in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::function_invoker<papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'()> in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::spawner<2ul, papilo::ConstraintMatrix<double>::compress(bool)::'lambda3'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'(), tbb::internal::parallel_invoke_helper::parallel_invoke_noop> in libpapilo-core.a(ConstraintMatrix.cpp.o)
typeinfo for tbb::internal::function_invoker<papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'()> in libpapilo-core.a(ConstraintMatrix.cpp.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/papilo] Error 1
make[1]: *** [binaries/CMakeFiles/papilo-executable.dir/all] Error 2
make: *** [all] Error 2
我尝试重新安装tbb或在makefile中指定tbb库的位置,但都没有真正的帮助。
有没有人遇到过类似的问题,可以帮我?
发布于 2021-09-27 10:23:57
不幸的是,PaPILO需要TBB2020,并且不能处理TBB2021 (至少对于当前版本1.x)。
因此,我建议您检查一下您安装了哪个TBB版本,并确保您安装了TBB2020。
另一方面,如果PaPILO没有找到TBB库,PaPILO会从外部的源代码构建一个静态TBB库。
https://stackoverflow.com/questions/69344466
复制相似问题