我正在尝试使用以下命令将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);
}
有什么想法吗?
答案 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或更高版本的编译器。