【问题标题】:ICC complains about missing __builtin_ia32_ldmxcsrICC 抱怨缺少 __builtin_ia32_ldmxcsr
【发布时间】:2015-10-31 02:59:24
【问题描述】:

在 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++内置函数?

【问题讨论】:

    标签: c++ g++ icc


    【解决方案1】:

    首先,我正在使用 64 位编译器在 64 位操作系统上进行编译;为什么链接器要查找仅在 32 位中找到的函数?

    可能是因为您的某些源代码不恰当地引用了它们。

    第一步:找出哪些对象正在引用这些内置函数:

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

    第二步:预处理对应的来源,找出引用的来源:

    icpc -E -I ... bad_source.cpp
    

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 2021-11-30
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多