集成libcpr,编译失败,error: bad value (‘armv8-a+crc‘) for ‘-march=‘ switch

服务端集成libcpr库的时候,编译失败,报错error: bad value ('armv8-a+crc') for '-march=' switch,

 

#30 25.32 cc1: error: bad value ('armv8-a+crc') for '-march=' switch

#30 25.32 cc1: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake tigerlake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native

#30 25.33 make[2]: *** [_deps/zlib-build/CMakeFiles/zlib.dir/build.make:370: _deps/zlib-build/CMakeFiles/zlib.dir/arch/arm/crc32_acle.c.o] Error 1

#30 25.33 make[1]: *** [CMakeFiles/Makefile2:212: _deps/zlib-build/CMakeFiles/zlib.dir/all] Error 2

#30 25.33 make[1]: *** Waiting for unfinished jobs....

怎么解决呢?

首先我们发现是编译zlib的时候报错了

 通过报错我们可以发现是系统的架构检测错误

我们去CMAKE里看下

发现是通过检测这个字段是否为TRUE判断系统架构的,从而编译的,那么这个字段子哪里设置的呢?

我们发现是在cmake文件夹里的cmake文件里设置的

 

进一步看下ARCH在那里定义的

 

但是通过uname -m 和lscpu | grep Architecture 检测都是x86_64

 那么需要看下是否在那里设置了ARCH?

发现在初始的的cmake里设置了系统架构,至此问题解决,把这个注释掉,成功编译程序

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这是一个编译错误,意思是使用了错误的参数“armv5”作为“-march=”开关的值。可能是因为编译器不支持该参数或者该参数不适用于当前的编译环境。需要检查编译器的文档或者尝试使用其他参数来解决该问题。 ### 回答2: 如果出现了“cc1: error: bad value (‘armv5’) for ‘-march=’ switch”的错误信息,意味着当前编译器无法识别设定的“-march=armv5”参数,从而导致编译失败。 这个错误通常与使用了错误的编译器或编译选项有关。在大多数情况下,这个错误出现的原因是不兼容的编译器选项或不支持的处理器体系结构。因此,需要进行一些调整来解决这个问题。 解决这个问题的方法有几种: 1. 在编译命令中加入“-mcpu=xxx”,其中的“xxx”为当前设备所支持的处理器体系结构。例如,“-mcpu=arm1176jzf-s”,这样可以确保编译器可以识别处理器体系结构,并正确地进行编译。 2. 检查是否为当前设备正确的安装了编译器。有时候,该错误可能由于编译器不兼容或版本过低导致的。如果是这个原因引起的错误,需要升级或更换编译器来解决问题。 3. 确认设置正确的交叉编译器,因为错误的交叉编译器也有可能导致错误的出现。交叉编译器指的是在不同的平台上将代码编译为目标平台可执行文件的编译器。 4. 了解代码的依赖项和运行环境,有时候出现错误也可能是因为缺少相关的依赖项或者运行环境。检查一下相关的依赖项和运行环境是否已经正确安装。 综上所述,当出现“cc1: error: bad value (‘armv5’) for ‘-march=’ switch”错误时,需要检查编译器选项、交叉编译器、正在使用的处理器体系结构、代码的依赖项和运行环境等因素,从而找到解决问题的方案。 ### 回答3: cc1: error: bad value ('armv5') for '-march=' switch 通常出现在编译 ARM 架构(尤其是 ARMv7 及更新版本)时。 这是因为编译器在编译时无法识别-march=armv5参数,因为 armv5 是较旧的 ARM 架构版本,与当前编译器不兼容。 解决这个问题的方法是更新编译器版本或使用正确的-march=参数。例如,在编译 ARMv7 架构时,应使用-march=armv7-a或-march=armv7ve参数。如果您正在使用GCC编译器,则还应使用-mfloat-abi=hard和-mfpu=vfpv3-d16参数指定硬件浮点单元。 除此之外,如果您正在使用交叉编译工具链,则还应确保工具链与目标设备支持的 ARM 架构版本兼容。 总之,要解决这个错误,您需要更加了解目标设备的 ARM 架构版本,并根据这些信息进行正确的编译参数设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeeFeiLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值