ICC抱怨缺少__builtin_ia32_ldmxcsr
ICC complains about missing __builtin_ia32_ldmxcsr
在Linux上使用Intel Composer 15 Update 3编译项目时,我在链接上得到以下未解析的符号:
undefined reference to `__builtin_ia32_ldmxcsr'
undefined reference to `__builtin_ia32_stmxcsr'
通过Google搜索,我发现这些函数是在32位版本的g++中构建的,这就是为什么英特尔找不到它们的原因。首先,我使用64位编译器在64位操作系统上进行编译;为什么链接器寻找一个只在32位找到的函数?其次,为什么目标代码是由英特尔寻找一个g++内置函数生成的?
首先,我用64位编译器在64位操作系统上编译;为什么链接器寻找一个只在32位找到的函数?
可能是因为你的一些源代码不恰当地引用了它们。
第一步:找出哪些对象引用了这些内置函数:
nm -A *.o *.a | egrep '__builtin_ia32_ldmxcsr|__builtin_ia32_stmxcsr'
第二步:预处理相应的源,找出引用来自哪里:
icpc -E -I ... bad_source.cpp