致命错误:arm_acle.h:没有这样的文件或目录

时间:2017-06-20 19:30:12

标签: c++ arm g++ cross-compiling crc32

我正在尝试使用以下命令将c ++应用程序交叉编译为ARM 64位,在Ubuntu 14.04.5 LTS上:

aarch64-linux-gnu-g++-4.8  -Wall -std=c++0x -O0 -march=armv8-a+crc -c mySRCs.c -o myOBJs.o

我想使用crc32指令,如:

crc = __crc32w(crc, value);

我在代码中包含了:

#include <arm_acle.h>

但在编译期间未找到标题,显示:

fatal error: arm_acle.h: No such file or directory

#include <arm_acle.h>
                  ^
compilation terminated.

如果我没有明确包含标题,则会出现以下错误:

error: ‘__crc32w’ was not declared in this scope
  crc = __crc32w(crc, val);

代码示例:

#include <arm_acle.h>
#include <cstring>
#include <cmath>

int main(){

        uint32_t val = 56;

        uint32_t crc = 0;

        crc = __crc32w(crc, val);

        printf("Result: %u\n",crc);

}

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

GCC 4.8是一个4年前的编译器(已发布March 2013),并且first GCC release提供了对ARMv8的AArch64执行状态的早期支持。

通过--prod公开的__crc32w(crc, value);等CRC内容支持被添加到11th June 2014的GCC主线上,并包含在GCC 5.1版本中。

如果要访问<arm_acle.h>系统标题,则需要GCC 5.1或更高版本的编译器。