首页 > 其他分享 >嵌入式开发工具链概述

嵌入式开发工具链概述

时间:2022-12-06 11:32:46浏览次数:45  
标签:文件 GCC GNU 嵌入式 开发工具 编译器 概述 工具


一、嵌入式系统软件开发流程

高级语言编写的源代码文件——》交叉编译器——》目标文件——》链接器

用目标机的汇编语言编写的源代码文件——》交叉汇编器——》目标文件——》链接器

链接器——》可执行程序——》目标机平台

交叉编译器:编译器运行在宿主机系统,但是编译器生成的可执行文件只能运行在目标机平台上。

二、开发环境分类

1、运行平台:本地开发环境、交叉开发环境

2、商业环境:收费工具、免费工具

三、GNU工具链

1、GNU工具链

(1)GNU Tools:全称(GNU Development Toolchains)

(2)GNU Tools交叉开发环境:全称(GNU Cross-Plateform Development ToolChains)

2、GNU既支持本地程序开发,又支持交叉编译

3、GNU开发工具

(1)自由软件

(2)完备的工具链:GCC、binutils、gdb、GNU make、patch、CVS、开发库

(3)命令行方式:使用稍复杂、功能强大

4、GNU Tools是Linux环境下最主要的开发工具集,主要有以下几部分:

(1)编译开发工具:把源程序编译为可执行文件,如GCC

(2)调试工具:对可执行程序进行源码或汇编级调试的软件,如gdb

(3)软件工程工具:用于协助多人开发或大型软件项目管理的软件,如:make等

5、GCC(GNU Compiler Collection)

(1)支持C、C++、ADA、Java、Fortran、PASCAL等语言

(2)主要包括:

①cpp:GNU C编译器的预处理器

②gcc:符合ISO标准的C编译器

③g++:符合ISO标准的C++编译器

④gcj:GCC的Java前端

⑤gnat:GCC的GNU ADA q5的前端

6、binutils:是一组二进制工具程序集合,是辅助GCC的主要软件。

主要包括:(1)as:GNU汇编器

                        (2)ld:GNU链接器

                        (3)ar:创建归档文件,以及制作静态库的工具

                        (4)nm:列出目标文件中的符号

                        (5)objcopy:复制和转化obj文件

                        (6)objdump:显示对象文件的信息

                        (7)readelf:显示elf格式执行文件中的各种信息

                        (8)size:显示目标文件和可执行文件各段的大小

                        (9)strings:显示文件中可以打印的字符

                        (10)strip:去掉可执行文件找那个多余的信息(如调试信息)

7、gdb:GNU调试器,可以用来调试C、C++和其他语言编写的程度。如加一些图形前端(如:DDD),可以在图形环境下调试程序。

8、GNU make:是一个用来控制可执行程序生成过程的程序。它允许用户生成和安装软件包,而无需了解生成、安装软件包的过程。

9、diff:比较文件差异的工具,也可以用来生成补丁。

10、patch:补丁安装程序,可以根据diff生成的补丁来更新程序

11、CVS:版本控制系统:用于管理发行版本和控制在多位作者间同时编辑源文件。

标签:文件,GCC,GNU,嵌入式,开发工具,编译器,概述,工具
From: https://blog.51cto.com/u_15903730/5915591

相关文章

  • servlet_概述和servlet_快速入门
    servlet_概述:serverapplet概念:运行在服务器端的小程序Servlet就是一个接口,定义一个Java类被浏览器访问到(tomcat识别)的规则将来我们自定义一个类,实现Ser......
  • 线上服务异常的定位、处理与优化的探索 - 第一章 概述
    一.1. 课题背景 项目在实施、交付、运维过程中难免出现过各种各样的线上服务异常发生。线上服务不同于本地,本地调试千好万好上线也运行难免出现问题。如:CPU爆满、起飞......
  • 使用开发工具,让Serverless开发变得更容易
    使用开发工具,让Serverless开发变得更容易Serverless作为一个应用,云服务商给我们提供自己的开发工具,有了Serverless开发工具可以让我们对应用的管理、应用的调试和应用的部......
  • 300004 房屋建筑构造的概述
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';$tit='房屋建筑构造的......
  • javaScript概述
    目录JS简介JS基础变量与常量基本数据类型运算符流程控制函数内置对象JS简介全称JavaScript但是与Java一毛钱关系都没有之所以这么叫是为了蹭Java的热度它是一门前端工......
  • Linux基础-01-概述思想
    1,一切皆文件;2、单一目的的小程序,组合小程序完成复杂任务;在linux中,每一个命令都是对应一个功能,通过不同的参数来完成不同的要求,通过繁多的小的命令来完成3、文本文件保存......
  • [N]Chap01:Java概述
    Thisisnottheend;Itisnoteventhebeginningoftheend.Butitis,Perhaps,Theendofthebeginning.......
  • Jenkins实践指南-01-pipeline概述
    1.pipeline概述1.1什么是pipeline从某种抽象层次上讲,部署流水线(Deploymentpipeline)是指从软件版本控制库到用户手中这一过程的自动化表现形式。——《持续交付-发布可......
  • 单元测试概述
    什么是单元测试本质上也是代码,但它的主要目的是用来验证业务代码的正确性、健壮性和稳定性,甚至是性能。它是代码级的测试。传统意义上的单元测试一般指软件的最小粒度模......
  • Swift闭包简要概述
    1.闭包闭包是一个捕获了外部变量或者常量的函数,可以有名字的函数,可以是匿名的函数,也可以是不捕获外部变量的函数。所以可以说闭包是特殊的函数。闭包是自包含的函数代码块,可......