交叉编译时选项-march=的必要性
发布日期:2021-06-30 10:11:28 浏览次数:4 分类:技术文章

本文共 278 字,大约阅读时间需要 1 分钟。

每个编译器都有默认的-march选项,其值一般都随主流芯片走。转自

比如老一点的arm交叉编译器,默认的选项可能是-march=armv4t,新一点的则可能是-march=armv6等等。

用老编译器编出来的二进制文件,只要没使用特殊指令集,大多数可以跑在新片子上,因为arm的向下兼容。

但是用新编译器默认选项编出来的二进制可执行文件,基本上无法在老的平台上跑,因为新架构可能会引入一些新指令。

 

例如个人在交叉编译树莓派4B时候没有添加

-march=armv7-a

导致了tan,pow等函数没有报错却无法使用,返回值是0,猜测是由于使用的硬浮点计算?

转载地址:https://islet.blog.csdn.net/article/details/112272742 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:undefined reference to `llvm::DisableABIBreakingChecks报错处理 LLVM
下一篇:Raspberry Pi下进程独占CPU的处理方法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月18日 07时35分10秒