Я установил Eigen и Ceres-Solver с brew в качестве предпосылок для существующего проекта.
Когда я запускаю make для проекта, я получаю следующее сообщение
Найдена зависимость Eigen, но найденная версия Eigen (3.3.1) не совсем совпадает с версией Eigen Ceres, с которой была скомпилирована (3.3.0). Это может вызвать тонкие ошибки, вызывая нарушения правила одного определения. Подробнее см. в статье Википедии http://en.wikipedia.org/wiki/One_Definition_Rule.
Моей первой идеей было скомпилировать Ceres-solver из исходников с помощью Eigen из brew, но во время сборки это выдавало другие сообщения об ошибках.
В частности, он накапливается до 54%, а затем печатает
[ 54%] Linking C executable ../bin/curve_fitting_c
Undefined symbols for architecture x86_64:
"___kmpc_atomic_fixed4_sub", referenced from:
__ZN5Eigen8internal29general_matrix_matrix_productIldLi1ELb0EdLi1ELb0ELi0EE3runElllPKdlS4_lPdldRNS0_15level3_blockingIddEEPNS0_16GemmParallelInfoIlEE in libceres.a(gradient_checker.cc.o)
__ZN5Eigen8internal29general_matrix_matrix_productIldLi1ELb0EdLi0ELb0ELi0EE3runElllPKdlS4_lPdldRNS0_15level3_blockingIddEEPNS0_16GemmParallelInfoIlEE in libceres.a(dogleg_strategy.cc.o)
__ZN5ceres8internal11EventLoggerC2ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
__ZN5ceres8internal11EventLoggerC1ERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
__ZN5ceres8internal11EventLoggerD2Ev in libceres.a(wall_time.cc.o)
... Пропуская некоторые строки...
__ZN5ceres8internal11EventLogger8AddEventERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE in libceres.a(wall_time.cc.o)
ld: symbol(s) not found for architecture x86_64
clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)
страница установки Ceres рекомендует Eigen 3.2.2 или более позднюю версию, поэтому 3.3.1 должно подойти, если только не было каких-то структурных изменений между 3.2 и 3.3.
Мой вопрос:
Какой следующий шаг мне следует предпринять? Устанавливаете старую версию Eigen?