首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >icc:包括omp.h需要byteswap.h

icc:包括omp.h需要byteswap.h
EN

Stack Overflow用户
提问于 2018-02-17 23:01:40
回答 1查看 284关注 0票数 0

我只是试着用icc-11编译我的代码(gcc非常好)。

如果包括omp.h,则会得到以下错误:

代码语言:javascript
复制
/usr/include/bits/byteswap.h(47): error: identifier "__builtin_bswap32" is undefined
    return __builtin_bswap32 (__bsx);
           ^

/usr/include/bits/byteswap.h(111): error: identifier "__builtin_bswap64" is undefined
    return __builtin_bswap64 (__bsx);

如果我包括stdlib.h,也会发生同样的情况。

我真的很困惑,我甚至不知道byteswap有什么好处。在编译之前,我已经发布了iccvars_intel64.sh脚本。但帮不上什么忙。

有什么想法吗?

如果想并行化一些循环,我甚至需要包括omp.h吗?也许我可以简单地省略#include <omp.h>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-23 09:08:58

不幸的是,ICC 11.0不支持__builtin_bswap32__builtin_bswap64。您可能会得到这些错误,因为byteswap.h是由omp.hstdlib.h内部包含的。这个问题在本LLVM错误报告中也有报道。

基本上,您的系统标头是“更新的”,与ICC 11.0不兼容。

由于在更新的ICC版本(至少从13.0开始,根据编译器资源管理器)中支持builtins,一个选项是升级到更新的ICC。

或者,您将需要使用与ICC 11.0兼容的标准标头,而不是您的系统标头,正如在这个Intel Developer Zone 线程中所解释的那样。方法之一是安装一个GCC版本,它“匹配”ICC 11.0,然后告诉ICC使用与GCC捆绑的标题。根据维基百科的说法,ICC11.0是在2008年11月发布的,所以GCC 4.2发布系列可能是兼容的(其他GCC释放见这里)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48846773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档