matlab
  • openmp
  • mex
  • 2017-12-07 28 views 0 likes 
    0

    사용하여 matlab에 2016b 일부 C++ 코드를 컴파일 :matlab에 : OpenMP를 함께 MEX 컴파일 할 수 없습니다 (정의되지 않은 참조)

    mex CXXFLAGS="\$CXXFLAGS -std=c++11 -fopenmp" CXXOPTIMFLAGS='\$CXXOPTIMFLAGS -Ofast -DNDEBUG mexMyFunction.cpp 
    

    내가 가지고 다음과 같은 오류 :

    undefined reference to `omp_get_thread_num' 
    undefined reference to `omp_get_num_threads' 
    

    시스템 : 우분투 16.04, g ++ 버전 : 5.4.0.

    위의 명령에서 -fopenmp을 제거하면 정상적으로 작동합니다. g ++로 직접 컴파일 (mex없이)도 가능했습니다.

    이 문제를 해결할 수 있도록 도와 주시겠습니까?

    미리 감사드립니다.

    +1

    'mex'가 어떻게 작동하는지 모르겠지만 연결 단계에'-fopenmp '를 추가해야합니다. – Zulan

    +0

    @ Zulan 고마워요! 나는 그것을 알아 냈다. – Khue

    답변

    1

    에서 다음 링크 플래그가 누락되었습니다 :

    LDOPTIMFLAGS="$LDOPTIMFLAGS -fopenmp -O2" -lgomp 
    

    전체 명령을

    mex CXXFLAGS="\$CXXFLAGS -std=c++11 -fopenmp" CXXOPTIMFLAGS='\$CXXOPTIMFLAGS -Ofast -DNDEBUG' LDOPTIMFLAGS="$LDOPTIMFLAGS -fopenmp -O2" -lgomp -I"/home/khue/Libs/Eigen" mexMyFunction.cpp 
    

    감사를 자신의 제안에 대한 @Zulan 할 수 있습니다.

     관련 문제

    • 관련 문제 없음^_^