2014-10-30 2 views
1

При связывании источников приложения для MIC с компилятором Intel C++ (icpc) у меня возникла ошибка.Ошибка связи с файлом MIC.o

Intel-МАЯ/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-МАЯ/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 Просто используя ipcp с openmp Как-то ошибка зависит от порядка компиляции файлов .o. Но там, конечно, нет зависимостей. – SScholl

ответ

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

требуется для связи.

+0

Я не делаю атомного добавления. единственная вещь - #pragma offload_transfer target (mic: 0) ->, поэтому она генерирует файл MIC.o – SScholl

+0

@SScholl, но ошибка компоновщика, которую вы указали, говорит, что эта функция отсутствует –

Смежные вопросы