I.MX8 调用arm compute library 程序在LINUX下的交叉编译问题-arm_neon.h头文件问题

原创,转载请附本文链接:
https://blog.csdn.net/qq_35383648/article/details/105285319

目录

1 问题描述
2 问题探索及解决办法

1、问题描述

在linux下交叉编译调用acl(arm compute library)的I.MX8运行程序时,添加完相应的头文件路径及库文件路径后,出现以下错误信息:
error: attribute(target("+nothing+simd")) is uknown;
以及一系列类似的错误信息:
error:’__Int8x8_t’ does not name a type
typedef __Int8x8_t int 8x8_t;

I.MX8 调用arm compute library 程序在LINUX下的交叉编译问题-arm_neon.h头文件问题_第1张图片

2、问题探索及解决办法

一开始感觉问题出在arm_neon.h头文件上,因为我们的代码是windows下编写的,所以考虑代码中包含的arm_neon.h头文件可能是windows下的arm_neon.h头文件,于是去windows下搜了以下,结果出现好多个。。。
I.MX8 调用arm compute library 程序在LINUX下的交叉编译问题-arm_neon.h头文件问题_第2张图片
没办法,只能挨个试。先从最可能的与对应版本相关的arm_neon.h头文件开始。。然后就开始了几乎一天的无用功操作~~~~~(因为问题根本不出在这儿,所以无论用以上哪个头文件,编译时都会报不同的错误)

—————————我是分割线———————————

于是乎,我就放弃了尝试其他arm_neon.h头文件,转而进一步百度/必应出现这个问题的原因,经过将近半天的检索。。。终于迎来了一线希望!!直接上链接:
https://www.cnblogs.com/liuwanpeng/p/7833000.html
链接中主要提到以下几个关键信息:
1)、包含的arm_neon.h头文件在gcc目录里。
这坚定了我觉得问题不出在arm_neon.h头文件上的信念。
2)、cmake时添加编译选项 -mfpu=neon -mfloat-abi=softfp -march=armv8-a(跟I.MX8芯片架构型号一致就行)-ffreestanding。如下,一定不要忘了加-ffreestanding!!!
cmake -mfpu=neon -mfloat-abi=softfp -march=armv8-a -ffreestanding …
然后再make,就能编译成功啦!
I.MX8 调用arm compute library 程序在LINUX下的交叉编译问题-arm_neon.h头文件问题_第3张图片
目前只是编译成功,代码运行是否正确还需要进一步将程序移植到I.MX8上运行才知道,希望一切顺利吧!!

你可能感兴趣的:(I.MX8 调用arm compute library 程序在LINUX下的交叉编译问题-arm_neon.h头文件问题)