2014-10-30 4 views
1

MIC 용 응용 프로그램 소스를 Intel C++ (icpc) 컴파일러와 링크하는 동안 오류가 발생했습니다.MIC.o 파일의 링크 오류

인텔-ICC/2013-64 버전 :

SOMETHINGMIC.o: relocation R_X86_64_PC32 against undefined symbol `_ZN9__gnu_cxx21__atomic_add_dispatchEPii' can not be used when making a shared object; recompile with -fPIC 
x86_64-k1om-linux-ld: final link failed: Bad value 

인텔-ICC/2015-64 버전 : 그것은 무엇

SOMETHINGMIC.o: In function `std::locale::facet::_M_add_reference() const': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0 bits/locale_classes.h:402: undefined reference to `__gnu_cxx::__atomic_add_dispatch(int*, int)' 
SOMETHINGMIC.o: In function `std::locale::facet::_M_remove_reference() const': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0 bits/locale_classes.h:409: undefined reference to __gnu_cxx::__exchange_and_add_dispatch(int*, int)' 
SOMETHINGMIC.o: In function `std::locale::_Impl::_M_add_reference()': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0/bits/locale_classes.h:511: undefined reference to `__gnu_cxx::__atomic_add_dispatch(int*, int)' 
SOMETHINGMIC.o: In function `std::locale::_Impl::_M_remove_reference()': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7. /bits/locale_classes.h:518: undefined reference to `__gnu_cxx::__exchange_and_add_dispatch(int*, int)' 
SOMETHINGMIC.o: In function `std::ios_base::_Callback_list::_M_add_reference()': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0/bits/ios_base.h:475: undefined reference to `__gnu_cxx::__atomic_add_dispatch(int*, int)' 
SOMETHINGMIC.o: In function `std::ios_base::_Callback_list::_M_remove_reference()': /usr/linux-k1om-4.7/linux-k1om/../x86_64-k1om-linux/include/c++/4.7.0/bits/ios_base.h:483: undefined reference to `__gnu_cxx::__exchange_and_add_dispatch(int*, int)' 

입니까?

+0

코드를 작성하는 데 사용한 명령을 게시 할 수 있습니까? 상황이 잘못되어 가고있는 곳을 알아내는 것이 도움이 될 것입니다. 감사. – froth

+0

@froth opencp와 함께 ipcp를 사용하는 것 어쨌든, 오류는 .o 파일을 컴파일하는 순서에 따라 다릅니다. 물론 거기에는 의존성이 없습니다. – SScholl

답변

0
__gnu_cxx::__atomic_add_dispatch(int*, int); 

이 연결되어야합니다.

+0

나는 원자 추가를하지 않는다. 유일한 것은 #pragma offload_transfer 타겟 (mic : 0) -> so이므로 MIC.o 파일을 생성합니다. – SScholl

+0

@SScholl,하지만 당신이 올린 링커 에러가이 함수가 없다고합니다. –