问题描述
我正在尝试在我的 Mac 机器上构建 SCIP 7.0.3 opt 套件,但我遇到了一些问题。
我正在使用 CMake 生成 make Makefile,一旦我输入 make
,我在链接步骤中失败了。我在这里附上日志
Consolidate compiler generated dependencies of target papilolib
[100%] Linking CXX shared library ../../lib/libpapilo.dylib
ld: warning: object file (../libclusol.a(lusol.f90.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol6b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol8b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol_util.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol7b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
Undefined symbols for architecture x86_64:
"tbb::interface5::internal::task_base::destroy(tbb::task&)",referenced from:
void tbb::parallel_invoke<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&,papilo::ProblemUpdate<double> const&,papilo::Num<double> const&,papilo::Reductions<double>&)::'lambda'(),papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda0'(),papilo::Reductions<double>&)::'lambda1'()>(double const&,papilo::Reductions<double>&)::'lambda'() const&,papilo::Reductions<double>&)::'lambda0'() const&,tbb::task_group_context&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&,papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&,tbb::task_group_context&) in papilolib.cpp.o
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 papilolib.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 papilolib.cpp.o
void tbb::parallel_invoke<papilo::Problem<double>::compress(bool)::'lambda'(),papilo::Problem<double>::compress(bool)::'lambda0'(),papilo::Problem<double>::compress(bool)::'lambda1'()>(double const&,papilo::Problem<double>::compress(bool)::'lambda'() const&,papilo::Problem<double>::compress(bool)::'lambda0'() const&,tbb::task_group_context&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>,papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&,std::__1::vector<double,std::__1::allocator<double> > const&,unsigned int*)::'lambda'(tbb::blocked_range<int> const&),tbb::auto_partitioner const>,tbb::blocked_range<int> >(double&,tbb::interface9::internal::start_for<tbb::blocked_range<int>,tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>,papilo::Probing<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&),tbb::auto_partitioner const>&) in papilolib.cpp.o
...
"tbb::internal::concurrent_vector_base_v3::internal_capacity() const",referenced from:
papilo::Probing<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&) in papilolib.cpp.o
papilo::DominatedCols<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&) in papilolib.cpp.o
papilo::Sparsify<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&) in papilolib.cpp.o
"tbb::internal::allocate_continuation_proxy::allocate(unsigned long) const",referenced from:
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>,papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&,tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>,papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&),tbb::auto_partitioner const>&) in papilolib.cpp.o
...
"tbb::internal::allocate_root_with_context_proxy::free(tbb::task&) const",referenced from:
tbb::interface9::internal::start_for<tbb::blocked_range<int>,tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&,unsigned int*)::'lambda'(tbb::blocked_range<int> const&) const&,tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>,papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&,papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&) const&,papilo::DominatedCols<double>::execute(papilo::Problem<double> const&,papilo::Sparsify<double>::execute(papilo::Problem<double> const&,tbb::auto_partitioner const&) in papilolib.cpp.o
...
"tbb::internal::allocate_root_with_context_proxy::allocate(unsigned long) const",tbb::task_group_context&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>,tbb::auto_partitioner const&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&,tbb::auto_partitioner const&) in papilolib.cpp.o
...
"typeinfo for tbb::task",referenced from:
typeinfo for tbb::empty_task in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda1'()> in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda0'()> in papilolib.cpp.o
typeinfo for tbb::interface9::internal::start_for<tbb::blocked_range<int>,tbb::auto_partitioner const> in papilolib.cpp.o
typeinfo for tbb::interface9::internal::flag_task in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda'()> in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&,papilo::Reductions<double>&)::'lambda1'()> in papilolib.cpp.o
...
"__gfortran_generate_error",referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
"__gfortran_st_write",referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_st_write_done",referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_stop_string",referenced from:
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
"__gfortran_transfer_array_write",referenced from:
_lu6prt_ in libclusol.a(lusol6b.f.o)
"__gfortran_transfer_character_write",referenced from:
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu7rnk_ in libclusol.a(lusol_util.f.o)
_lu6chk_ in libclusol.a(lusol_util.f.o)
_lu1fad_ in libclusol.a(lusol_util.f.o)
_lu1fac_ in libclusol.a(lusol_util.f.o)
...
"__gfortran_transfer_integer_write",referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_transfer_logical_write",referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
_lu1rec_ in libclusol.a(lusol_util.f.o)
"__gfortran_transfer_real_write",referenced from:
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
_lu8adr_ in libclusol.a(lusol8b.f.o)
_lu1fad_ in libclusol.a(lusol_util.f.o)
_lu1fac_ in libclusol.a(lusol_util.f.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]: *** [lib/libpapilo.dylib] Error 1
make[1]: *** [papilo/binaries/CMakeFiles/papilolib.dir/all] Error 2
make: *** [all] Error 2
我使用命令 brew install tbb
由于我无法粘贴完整日志,因此必须在中间修剪上述日志。
完整日志https://pastebin.com/p7YL4161
编辑:我使用的是 macOS 最新版本和我的 cmake -DCMAKE_BUILD_TYPE=Release -DIPOPT=off ..
-- Build type: Release
SoPlex with Boost CPP multiprecision libraries.
-- Could NOT find Quadmath (missing: Quadmath_LIBRARY Quadmath_INCLUDE_DIR)
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found suitable version "1.76.0",minimum required is "1.58.0") found components: program_options
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found version "1.76.0")
-- Could NOT find Quadmath (missing: Quadmath_LIBRARY Quadmath_INCLUDE_DIR)
-- Git hash: e567fef
-- Build shared libraries: ON
-- Build type: Release
-- Finding ZLIB
-- Finding ZLIB - found
-- Finding Readline
-- Finding Readline - found
-- Finding GMP
-- Finding GMP - found
-- Finding PAPILO
-- Finding PAPILO - found
-- Finding Solver "spx"
-- Finding Soplex
-- Finding SOPLEX - found
-- Support CLP: OFF
-- Support CPLEX: OFF
-- Support GLOP: OFF
-- Support GUROBI: OFF
-- Support XPRESS: OFF
-- Support MOSEK: OFF
-- Support QSO: OFF
-- Finding symmetry computation program "bliss"
-- Finding BLISS
-- Could NOT find BLISS (missing: BLISS_INCLUDE_DIR BLISS_INCLUDE_Dirs BLISS_LIBRARIES BLISS_DEFinitioNS)
-- Finding BLISS - not found
-- CodeCoverage: OFF
-- Finding ZIMPL
-- Finding ZIMPL - found
-- Support IPOPT: OFF
-- Support WORHP: OFF
-- Looking for FE_DOWNWARD
-- Looking for FE_DOWNWARD - found
-- Finding CRITERION
-- Could NOT find CRITERION (missing: CRITERION_LIBRARY CRITERION_INCLUDE_DIR)
-- Finding CRITERION - not found
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Could NOT find CRITERION (missing: CRITERION_LIBRARY CRITERION_INCLUDE_DIR)
-- Support AMPL: OFF
-- Build shared libraries: ON
-- Build type: Release
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Found GSL: /usr/local/Cellar/gsl/2.6/include (found suitable version "2.6",minimum required is "2.0")
-- Could NOT find CLIQUER (missing: CLIQUER_INCLUDE_Dirs CLIQUER_LIBRARIES)
-- Could NOT find BLISS (missing: BLISS_INCLUDE_DIR BLISS_INCLUDE_Dirs BLISS_LIBRARIES BLISS_DEFinitioNS)
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found version "1.76.0") found components: iostreams serialization program_options
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB - Success
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2 - Success
-- Linking solvers: SCIP;SoPlex
-- The following OPTIONAL packages have been found:
* Threads
* BLAS
* PkgConfig
* GSL (required version >= 2.0)
-- The following required packages have been found:
* BISON
* FLEX
* TBB
* Readline
* PAPILO
* ZIMPL
* ZLIB
* GMP
* SCIP
* SOPLEX
* boost_headers (required version == 1.76.0)
* Boost
-- The following OPTIONAL packages have not been found:
* Quadmath
* CRITERION
* CLIQUER
* Hmetis
* BLISS
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/username/Downloads/scipoptsuite-7.0.3/build
解决方法
编译失败,因为您的 tbb 库中缺少一个内部函数。
TBB 基于 oneapi 从 tbb -> oneTBB 进行了切换。我们目前不支持 oneTBB,但正在努力。
https://formulae.brew.sh/formula/tbb Tbb 链接到 oneTBB,因此您需要安装 tbb@2020 (https://formulae.brew.sh/formula/tbb@2020)。
也许您需要在此之前删除或取消链接 tbb 才能运行构建。由于缓存问题,请记住在尝试重新编译之前删除构建目录。
能否请您尝试一下,然后报告是否有效。
菲利普