2017-01-18 20 views
0

기존 프로젝트의 전제 조건으로 brew가있는 Eigen 및 Ceres-Solver를 모두 설치했습니다. 내가 프로젝트에 대한 만들어 실행하면Eigen과 Ceres-Solver의 버전을 비교하는 가장 간단한 방법은 무엇입니까?

, 나는 다음과 같은 메시지를 얻을

찾을 수 아이겐 의존하지만, 아이겐의 버전 (3.3.1) 컴파일 정확히 아이겐 세레스의 버전과 일치하지 않습니다 발견 (3.3.0)입니다. 이는 One Definition Rule의 위반을 유발하여 미묘한 버그를 유발할 수 있습니다. 자세한 내용

내 첫번째 생각은 양조에서 아이겐를 사용하여 소스에서 세레스 해결사를 컴파일했지만,이 화장하는 동안 다른 오류 메시지를 생성하기위한 위키 백과 문서 http://en.wikipedia.org/wiki/One_Definition_Rule를 참조하십시오. ...

__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) 

구체적으로는 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) 

를 인쇄 ceres installation page는 아이겐 3.2.2 권장 이상이므로 3.3 3.2와 3.3 사이에 구조적 변화가 없다면 .1 괜찮을 것입니다.

내 질문 :

내가 시도해야 다음 단계는 무엇입니까? Eigen의 이전 버전을 설치 하시겠습니까?

+0

글쎄, 명확한 경고가 나타납니다. 우리가 너 한테 뭘 기대한다고? "아니오, 소프트웨어 개발자는 소프트웨어가 어떻게 작동하는지 전혀 모릅니다." –

+0

좋습니다. 첫 번째 질문에 대한 대답은 '아니요'라고 가정했지만 다음에 시도 할 내용에 대해 다소 혼란스러워합니다. – Cecilia

답변

1

the instructions on the ceres website을 사용하여 소스에서 ceres를 만들려고했습니다. 아직도 실패한 이유는 확실하지 않지만 양조 (이전에는 존재하지 않았던 옵션)를 사용하여 소스를 구축하는 것이 효과적입니다.

brew install --build-from-source ceres-solver

그것은 BREW 통해 설치된 고유치 의존성 (아이겐 3.3.1)를 사용하고, 에러 메시지를 생성하지 않는다.