2014-10-30 56 views
1

在将MIC应用程序的源与Intel C++(icpc)编译器链接时,出现错误。链接错误与MIC.o文件

Intel的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 

Intel的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 2014-10-31 11:34:17

+0

@froth只是使用ipcp openmp 不知何故,错误取决于编译.o文件的顺序。但当然没有依赖关系。 – SScholl 2014-11-27 09:33:23

回答

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

需要链接。

+0

我不做一个原子添加。唯一是#pragma offload_transfer目标(mic:0) - >因此,它会生成一个MIC.o文件 – SScholl 2014-10-30 12:50:26

+0

@SScholl,但是您发布的链接器错误显示此功能缺失 – 2014-10-30 12:53:13