在Linux上使用Intel Composer 15 Update 3编译项目时,我在链接时会得到以下未解析的符号:
undefined reference to `__builtin_ia32_ldmxcsr'
undefined reference to `__builtin_ia32_stmxcsr'
在进行谷歌搜索时,我发现这些功能是用32位版本的g ++构建的,这就是英特尔无法找到它们的原因。首先,我正在使用64位编译器编译64位操作系统;为什么链接器要查找仅在32位中找到的函数?其次,为什么英特尔生成的目标代码正在寻找g ++内置函数?
答案 0 :(得分:0)
首先,我正在使用64位编译器编译64位操作系统;为什么链接器要查找仅在32位中找到的函数?
可能是因为您的某些源代码不恰当地引用了它们。
第一步:确定哪些对象引用了这些内置函数:
nm -A *.o *.a | egrep '__builtin_ia32_ldmxcsr|__builtin_ia32_stmxcsr'
第二步:预处理相应的源以确定引用的来源:
icpc -E -I ... bad_source.cpp