交叉编译相关知识

原创 2018年04月16日 16:38:23
  1. 交叉编译概念
    交叉编译时一种和本地编译相对的概念,用来区分编译环境和运行环境。
    交叉编译:在两个不同的系统之间运行的程序的编译称为交叉编译,例如在linux编译的程序在ARm设备上运行。
    本地编译:在一个系统下进行编译和运行的程序的编译称为本地编译,例如各种语言的IDE编辑器。

  2. 为什么要有交叉编译
    在嵌入式开发过程中,嵌入式系统中并没有足够的资源进行代码的编译操作,也装不下编译器等庞大的程序,只能在linux或者window下进行编译链接操作,在存入嵌入式系统中直接运行。

  3. 工具链和交叉工具链
    工具链:字面意思理解,就是一条各种工具形成的链条,相当于流水线,从编译到链接形成可执行程序
    交叉工具链:相当于交叉编译器,即交叉编译的Gcc等

  4. 交叉编译器的命名规则
    arch-vendor-kernel-system
    其中:
    Arch:即要运行的系统架构,也是目标环境,例如Arm
    vendor:作者名称,也有使用体系架作为名称的,例如cpu/cpu内核名
    kernel:内核,编译环境,是否带os系统等
    System:系统,一般为库函数名,系统等

  5. 常用交叉编译工具(命令使用方式)
    1.arm-linux-gcc:编译链工具
    2.arm-linux-add2line:将地址与程序的行数一一对应,一般在函数出错时使用
    3.arm-linux-objcopy: 复制函数,一般用于最后的进制转换,通过编译链接后生成的ELF转换成二进制bin文件
    4.arm-linux-readelf:显示ELF文件的信息,文件架构、大小端或者动态运行库等信息
    5.arm-linux-ar:建立,提取将文件归档
    6.arm-linux-ld:链接器,链接编译过后的文件
    7.arm-linux-objdump:显示文件信息,一般为写交叉编译工具的人提供
    8.arm-linux-size:列出文件的每一段或者每一块的大小
    9.arm-linux-nm:列出(.o)文件中每种符号的统计清单
    10.arm-linux-strip:丢弃目标文件中的特定或者全部符号
    11.arm-linux-cc
    12.arm-linux-gprof:程序分析优化命令,显示函数调用等信息以便开发人员优化代码
    13.arm-linux-c++filt:在c++和Java中提供了函数重载,该命令使得重载的函数可以被系统识别
    14.arm-linux-as:将汇编程序转成ELF文件,提供交叉编译的参考表于符号表
    15.arm-linux-ldd:显示程序可执行时必备的依赖库(由shell脚本实现)
    16.arm-linux-strings:打印文件中可打印的字符串
    17.arm-linux-ranlib:产生归档文件的索引
    18.arm-linux-gcov:得到代码的覆盖率


日后继续补充命令参数等常见用法
如有错误还劳请指正,非常谢谢.

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Double_YH/article/details/79962231

嵌入式交叉编译与交叉调试

  • 2011年07月16日 11:03
  • 2.79MB
  • 下载

浏览器背景知识(dlmu2001)

dlmu2001tomorrow.cyz@gmail.com 1.1     网络接入浏览器是用来上网的,这个很好理解,除了离线浏览,大部分的行为就是用来跟各种服务器做交互,而交互的第一个前提就是网络...
  • dlmu2001
  • dlmu2001
  • 2009-05-23 21:19:00
  • 2009

交叉编译基础知识汇总

一.什么是交叉编译  什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。  平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating Sys...
  • oopDesigner
  • oopDesigner
  • 2010-03-22 20:34:00
  • 1369

Hadoop一些相关知识点整理

一些摘录
  • zmdsjtu
  • zmdsjtu
  • 2017-03-15 21:54:36
  • 579

一、C++相关知识简介

1. C++11(C++0x):ISO/IEC 14882:2011 2. C++03 3.
  • lhb2113
  • lhb2113
  • 2014-07-03 02:48:40
  • 371

栈的相关知识

 一.栈的定义 栈是限制仅在表的一端进行插入和删除运算的线性表又称为后进先出表(LIFO表)。插入、删除端称为栈顶,另一端称栈底。表中无元素称空栈。   二.栈的逻辑结构和存储表示 栈的...
  • qy961212
  • qy961212
  • 2017-11-03 15:29:32
  • 49

Spring 事务相关知识

Propagation (事务的传播属性) Propagation :key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用: PROPAGATION_...
  • skymouse2002
  • skymouse2002
  • 2017-04-26 15:18:00
  • 82

无线通信知识积累

1、移动通信系统工作方式 单工 信息只向一个方向传播 半双工 信息可以双向传播,但宏观的同一时间只能传播一个方向。上传与下载不能同时进行 全双工 信息可以双向传播,又细分为时分双工和频分双工 时...
  • qq_33069737
  • qq_33069737
  • 2016-09-12 14:31:50
  • 567

嵌入式基础知识简介

  • 2011年09月21日 20:31
  • 97KB
  • 下载
收藏助手
不良信息举报
您举报文章:交叉编译相关知识
举报原因:
原因补充:

(最多只允许输入30个字)