2015-08-07 2 views
0

При компиляции проекта с Intel Composer 15 Update 3 на Linux, я получаю следующий неразрешенные символы на ссылки:ICC жалуется на отсутствие __builtin_ia32_ldmxcsr

undefined reference to `__builtin_ia32_ldmxcsr' 
undefined reference to `__builtin_ia32_stmxcsr' 

После выполнения поиска Google, я обнаружил, что эти функции встроены в 32-разрядной версии g ++, поэтому Intel не может их найти. Во-первых, я компилирую на 64-разрядную ОС с 64-битным компилятором; почему линкер ищет функцию, найденную только в 32-разрядной версии? Во-вторых, почему объектный код, созданный Intel, ищет встроенную функцию g ++?

ответ

0

Во-первых, я компилирую на 64-разрядную ОС с 64-разрядным компилятором; почему линкер ищет функцию, найденную только в 32-разрядной версии?

Вероятно, потому что некоторые из вашего исходного кода ненадлежащим образом ссылаются на них.

Первый шаг: выяснить, какой объект (ы) ссылаются эти встроенные функции:

nm -A *.o *.a | egrep '__builtin_ia32_ldmxcsr|__builtin_ia32_stmxcsr' 

Второй шаг: предобработки соответствующий источник, чтобы выяснить, где ссылки идут от:

icpc -E -I ... bad_source.cpp 
Смежные вопросы