在配置交叉编译链时,需要指定目标CPU的型号,根据网上广为流传的说法,需要同时指定-march-mtune-mcpu这三个参数,并且这三个参数还是不同的。在使用crosstool-ng时,就对应CT_ARCH_ARCHCT_ARCH_TUNECT_ARCH_CPU这三个参数,针对S3C2440,网上所有文章中的设置均是:

Architecture level = CT_ARCH_ARCH = -march = armv4t
Emit assembly for CPU = CT_ARCH_CPU = -mcpu = arm9tdmi
Tune for CPU = CT_ARCH_TUNE = -mtune = arm920t

比如以下这些文章:

【整理】crosstool-ng中的Architecture level,Emit assembly for CPU,Tune for CPU对于TQ2440的S3C2440的ARM920T填写何值
第一部分:crosstool-ng 制作交叉编译工具链 for s3c2440
用crosstool-ng建立自己的ARM交叉编译工具链 (适用于S3C6410以及其它处理器)

这样设置不能说是错的,然而并不是推荐的设置方法。老版本的GCC的确是需要这样同时设置三个参数的,然而新版本的GCC(具体是哪个版本之后估计不可考了)并不需要这样设置,只需要使用-mcpu(CT_ARCH_CPU)这一个参数就可以了。网上很多近些年来的文章还这样说其实是以讹传讹。

以GCC 5.2.0为例,其帮助文档中关于这三个参数的说明如下(ARM部分):

-march=name

This specifies the name of the target ARM architecture. GCC uses this nameto determine what kind of instructions it can emit when generating assemblycode. This option can be used in conjunction with or instead of the -mcpu=option.
Permissible names are: armv2, armv2a, armv3, armv3m, armv4,armv4t, armv5, armv5t, armv5e, armv5te, armv6, armv6j, armv6t2, armv6z,armv6zk, armv6-m, armv7, armv7-a, armv7-r, armv7-m, armv7e-m, armv7ve,armv8-a, armv8-a+crc, iwmmxt, iwmmxt2, ep9312.


-mtune=name

This option specifies the name of the target ARM processor for which GCCshould tune the performance of the code. For some ARM implementationsbetter performance can be obtained by using this option.
Permissible namesare: arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620, arm7, arm7m,arm7d, arm7dm, arm7di, arm7dmi, arm70, arm700, arm700i, arm710, arm710c,arm7100, arm720, arm7500, arm7500fe, arm7tdmi, arm7tdmi-s, arm710t,arm720t, arm740t, strongarm, strongarm110, strongarm1100, strongarm1110,arm8, arm810, arm9, arm9e, arm920, arm920t, arm922t, arm946e-s, arm966e-s,arm968e-s, arm926ej-s, arm940t, arm9tdmi, arm10tdmi, arm1020t, arm1026ej-s,arm10e, arm1020e, arm1022e, arm1136j-s, arm1136jf-s, mpcore, mpcorenovfp,arm1156t2-s, arm1156t2f-s, arm1176jz-s, arm1176jzf-s, cortex-a5, cortex-a7,cortex-a8, cortex-a9, cortex-a12, cortex-a15, cortex-a53, cortex-a57,cortex-a72, cortex-r4, cortex-r4f, cortex-r5, cortex-r7, cortex-m7,cortex-m4, cortex-m3, cortex-m1, cortex-m0, cortex-m0plus,cortex-m1.small-multiply, cortex-m0.small-multiply,cortex-m0plus.small-multiply, exynos-m1, marvell-pj4, xscale, iwmmxt,iwmmxt2, ep9312, fa526, fa626, fa606te, fa626te, fmp626, fa726te, xgene1.
Additionally, this option can specify that GCC should tune the performance
of the code for a big.LITTLE system. Permissible names are:
cortex-a15.cortex-a7, cortex-a57.cortex-a53, cortex-a72.cortex-a53.


-mcpu=name

This specifies the name of the target ARM processor. GCC uses this name to derive the name of the target ARM architecture (as if specified by -march)and the ARM processor type for which to tune for performance (as if specified by -mtune). Where this option is used in conjunction with -marchor -mtune, those options take precedence over the appropriate part of this option.
Permissible names for this option are the same as those for -mtune.

特别注意其中对-mcpu参数的说明,指定了-mcpu后,GCC编译器会自动推导出-march-mtune,故不需要再指定这两个参数,只需要给出-mcpu即可,而且-mcpu的可能取值与-mtune完全相同。比如S3C2440,只需要加上-mcpu=arm920t即可。

在crosstool-ng的新版本(比如1.22.0)中,使用menuconfig进行配置时,一旦设置了Emit assembly for CPU这个选项,Architecture levelTune for CPU这两个选项就会自动消失。最初在配置的时候还以为是Bug,后面仔细研究下才发现这是crosstool-ng已根据GCC的新特性进行了升级。

crosstool-ng配置中的Architecture level、Emit assembly for CPU 、Tune for CPU相关推荐

  1. SAP License:SAP MM配置中的一些常用的 TCODE

    SAP MM配置中的一些常用的 TCODE 1: OX14 – Define Valuation Area (Tick one only- Once your system go live, no m ...

  2. 第二十一课LNMP环境配置中

    12.7 默认虚拟主机 介绍 现在一个主机可以跑多个站点,所以就有了虚拟主机的概念.我们可以把一台服务器虚拟出多个主机出来,专业就可以实现一台服务器上跑多个站点. 作用:任何一个域名指向这台服务器,只 ...

  3. 计算机命令vty是什么意思,讲述华为交换机配置中HTTP访问和vty访问命令 -电脑资料...

    讲述华为交换机配置中HTTP访问和vty访问命令,有很多热心的网友对华为交换机配置问题给出了答复,不知道是不是提问者想要的答案,感谢网友对HTTP访问和vty访问命令命令的详细解答, 华为交换机配置标 ...

  4. Idea--Tomcat配置中的On Upate Action 与 On Frame Deactivation

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:https://www.cnblogs.com/zhangguangju/p/7027904.html 这两个选项的设 ...

  5. 第五节13读取配置中的连接字符串

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. SAP MM 采购单据的屏幕布局配置中字段选择值“$$$$”有什么用处?

    SAP MM 采购单据的屏幕布局配置中字段选择值"$$$$"有什么用处? 项目实践中,常常会定义用户参数EFB(Function Authorization)并为之分配字段选择. ...

  7. SAP MM PR Release Strategy 配置中Classification数据的维护

    SAP MM PR Release Strategy 配置中Classification数据的维护 MM顾问都知道,在标准SAP系统中,采购申请审批策略的配置,有部分数据是不能通过TR传输的方式快捷的 ...

  8. ZooKeeper配置中出现Error contacting service. It is probably not running

    问题描述 ZooKeeper配置中出现Error contacting service. It is probably not running,实际上已经装了ZooKeeper,并进行了相关文件的配置 ...

  9. Spring Boot 配置中的敏感信息如何保护?

    在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...

最新文章

  1. gnome3.2 安装体验
  2. 1.1 Java注解(Annotation)简介
  3. idea 提示接口注释信息
  4. metasploit连接postgresql的问题(U盘启动kali linux)
  5. RESTClient 使用
  6. python计算学分绩点的程序_Python爬虫实战七之计算大学本学期绩点
  7. Unity3d第一人称视角如何设置
  8. 罗斯蒙特214CRTSMB1S3M0420SLM2AR1C1B1TBM2温度传感器
  9. word没有标题3和标题4的解决方式
  10. Ubantu18.04
  11. 7-12 清点代码库 (25 分)
  12. 前端基础知识学习 XML JSON RESTFUL SOAP WEBSERVICE
  13. 笔记本高分屏字体模糊_4k/1080p屏幕字体模糊怎么办?win10高分屏笔记本字体模糊太小的解决办法...
  14. SVG描边动画实现过程
  15. CSS 使文字纵向排列的七种方
  16. VMware上创建虚拟机以及安装操作系统
  17. 非常好用的XueTr-驱动开发,底层开发等等的好助手
  18. 百胜erp软件下载 php,百胜erp软件迎来电商软件3.0时代
  19. 数字化、智能化将成为未来经济发展的主流
  20. jenkins+maven+gitlab+harbor+k8s的 CI/CD

热门文章

  1. CentOS7_装机软件推荐
  2. USB 2.0 全速 FULL SPEED 和高速 HIGH SPEED 的区别
  3. 伺服电机、舵机、步进电机的区别
  4. 【Python】Excel处理
  5. MySQL数据单个数据太大,导入不进去
  6. SQL Server 2008企业试用版到期,升级为企业版
  7. 工欲善其事,必先利其器 _SUBLIME TEXT 3_使用心得(上篇)
  8. 多线程导出大规模excel文件
  9. Maven学习(八)继承和聚合
  10. PHP中include、include_once、require、require_once四者区别