2017-06-20 2 views
0

Je suis en train de l'application de compilation croisée un C++ pour ARM 64 bits en utilisant la commande suivante, sur Ubuntu 14.04.5 LTS:erreur fatale: arm_acle.h: Aucun fichier ou répertoire

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

I souhaite utiliser l'instruction crc32 comme:

crc = __crc32w(crc, value); 

et j'inclus dans le code:

#include <arm_acle.h> 

mais l'en-tête on ne trouve pas pendant la COMPI lation, ce qui montre:

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

#include <arm_acle.h> 
       ^
compilation terminated. 

Si je ne comprends pas l'en-tête explicitement, l'erreur suivante apparaît:

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

Un échantillon du code:

#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); 

} 

Toute idée?

+0

Où avez-vous entendu parler de cet en-tête et de cette fonction? Est-ce que le fichier d'en-tête se trouve n'importe où sur votre système (comme si vous le faites par exemple 'locate arm_acle.h' ou' find/usr -name 'arm_acle.h'' avez-vous des hits)? –

+0

Vous devez toujours fournir le chemin d'accès à ce fichier d'en-tête au compilateur (option -I) – Heyji

Répondre

2

GCC 4.8 est un compilateur de 4 ans (publié March 2013), et était le first GCC release fournissant un support précoce pour l'état d'exécution AArch64 de ARMv8.

La prise en charge des identificateurs CRC, tels que __crc32w(crc, value); exposés via <arm_acle.h>, a été ajoutée à la ligne principale de GCC au 11th June 2014 et incluse dans la version GCC 5.1.

Vous aurez besoin d'un compilateur GCC 5.1 ou ultérieur si vous souhaitez accéder à l'en-tête système <arm_acle.h>.