-march=native引发的segmentation fault问题
1. -march=[native]选项:gcc/g++编译器通过-march指定cpu架构,指定该选项之后编译器将不会生成兼容的指令集,而是该架构支持的特定指令集,可以取得一部分优化的效果。特殊地,-march=native选项让编译器获取当前机器的cpu架构,并生成该架构的最优指令,达到优化指令集的目的。
2. 作用:根据指定的架构对代码进行指令的优化。
3. 缺陷:降低可执行文件的移植性。在指定了-march后,gcc不会生成兼容的指令集,导致了该二进制文件在其他架构上运行时,该架构的cpu并不能识别相应指令,造成illegal instruction & segmentation fault。
参考链接:
https://www.cnblogs.com/yutongqing/p/6823385.html
https://www.jianshu.com/p/ccc1166b4bc7
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
