ZBLOG

/home/juju/rk3588/rknn-toolkit2/rknpu2/examples/cryptopp-CRYPTOPP_8_9_0/src/arm_simd.h:51:14: error: instruction requires: crc 51 | __asm__ ("crc32w %w0, %w0, %w1 \n\t" | ^ :1:2: note: instantiated into as...

这个错误表明您的编译器尝试生成 ARM 汇编指令 crc32w,但您的目标 CPU 架构不支持该指令。这通常是因为您正在为不支持 CRC 指令的 ARM 处理器(如某些较旧的型号)进行编译,或者可能是由于配置问题。

以下是一些解决此问题的方法:

1. 检查目标架构

确保您的设备或模拟环境确实支持 crc32w 指令。这个指令是 ARMv8-A 的一部分,如果您在更早版本的 ARM(如 ARMv7)上运行,则会出现此错误。确认目标架构是否正确设置为 arm64-v8a

2. 条件编译

cryptopp 中使用条件编译来检查当前平台是否支持 CRC 指令。如果未支持,可以选择其他方法或实现软件备份。

修改 arm_simd.h 文件,添加条件判断,例如:

#if defined(__ARM_FEATURE_CRC32)
    __asm__ ("crc32w   %w0, %w0, %w1\n\t"
              : "+r"(result) : "r"(input));
#else
    // 使用软件实现的替代方案
#endif

3. 更新 NDK 和工具链

确保您使用的是最新版本的 Android NDK,它可能包含对新硬件特性的更好支持,以及修复了一些与特定 CPU 架构相关的问题。

4. 设置编译选项

确保在项目的构建系统中为 ndk-build 或 CMake 提供了正确的编译选项,以针对适当的架构进行优化。在您的 Android.mk 或 CMakeLists.txt 中,设置如下:

APP_ABI := arm64-v8a

或对于 CMake:

set(CMAKE_SYSTEM_PROCESSOR arm64)

5. 查阅文档和社区

访问 Crypto++ 的 GitHub 页面和用户论坛,看看是否有其他开发者遇到类似的问题,并查看解决方案或补丁。

通过上述步骤,您应该能够解决与 crc32w 指令相关的问题。如果仍然存在问题,请提供更多上下文信息,例如您使用的具体 NDK 版本、所处的平台等,以便进一步分析。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=6947

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?