交叉编译时选项-march=的必要性
每个编译器都有默认的-march选项,其值一般都随主流芯片走。转自https://blog.csdn.net/huipengzhao/article/details/6724730?utm_source=blogxgwz0
比如老一点的arm交叉编译器,默认的选项可能是-march=armv4t,新一点的则可能是-march=armv6等等。
用老编译器编出来的二进制文件,只要没使用特殊指令集,大多数可以跑在新片子上,因为arm的向下兼容。
但是用新编译器默认选项编出来的二进制可执行文件,基本上无法在老的平台上跑,因为新架构可能会引入一些新指令。
例如个人在交叉编译树莓派4B时候没有添加
-march=armv7-a
导致了tan,pow等函数没有报错却无法使用,返回值是0,猜测是由于使用的硬浮点计算?
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
