ICC抱怨缺少__builtin_ia32_ldmxcsr

ICC complains about missing __builtin_ia32_ldmxcsr

本文关键字:builtin ldmxcsr ia32 ICC      更新时间:2023-10-16

在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