嵌入式linux开发工具有哪些

嵌入式linux开发工具有:1、vim工具,vim是从vi发展出来的一个文本编辑器,有代码补全,编译及错误跳转等方便编程的功能;2、gcc编译器,是由GNU开发的编程语言编译器;3、工程管理器make,make是linux中的工程自动编译管理器等。

嵌入式linux开发工具有哪些

本教程操作环境:linux5.9.8系统、Dell G3电脑。

嵌入式linux开发工具有哪些?

嵌入式Linux开发工具

vim的使用

1、文本编辑器:vim +vscode:学会使用并配置vim、安装及使用插件+远程链接vscode

2、编译器gcc:常用编译选项,静态库和动态库的制作和使用

3、调试器gdb:断点调试、查看内存、调试内存错误

4、工程管理器make:编写Makfile,多目录的Makefile 编写

5、shell编程(C语言之后)

6、git版本管理工具(线上:C语言)

7、Cmake(项目)

8、内存检测工具(线上:C语言)

vi/vim/gvim:文本编辑器 gedit emac(脱离鼠标)

适用场景:单文件编辑;vim+插件(高度定制)>IDE

vim模式:命令行模式(初次进入,按a,i)、底行模式、插入模式(esc切换为命令行)wq保存退出

vim配置(vimc):

修改/etc/vim/vimc文件(行号,缩进风格、鼠标支持)

vim /etc/vim/vimrc

安装插件

vim命令的使用:

命令行: yy复制 p粘贴 dd删除 u恢复上一行

底行:查找 /str ?str

替换: 行号或者 %s/old/new/gc

编辑多个文件:vim文件1 文件2 文件3.。

跳转: n 文件名

文件保存 w r

sp+文件名 多文件编写

gcc编译器

和“”区别:搜索路径不同:前者在系统头文件目录《/usr/include》搜索,若没有,就报错

后者在当前目录查找,若没有,再到系统头文件目录查找,若没有,就报错

规范:包含系统头文件 “”包含自定义头文件

#if 0 //注释 //#if 1//取消注释#endif

不同的处理器有不同的汇编

系统内的所有头文件都在 vim/user/include/头文件

gcc概述:GNU计划提供的编译器(Unix cc编译器 )(编译工具链 g++ ld ldfd)–>(交叉编译工具链)

什么是交叉编译?.c->.s->.o->elf

在宿主机下编译出在目标机下运行的代码的过程

在当前CPU平台下编译出在其它CPU平台运行的代码的过程

a源文件到可执行经历了哪几个步骤?(预处理,编译,汇编,链接)b预处理的任务:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef)(#开头的代码)c编译的任务:检查语法。转成汇编、生成汇编文件(.s/.S)d汇编的任务:编译汇编文件,生成目标文件(.o)e链接的任务:链接所有目标文件,生成符号表,生成可执行文件

编译选项

-o(可执行重命名:elf格式?)

-E(编译器只进行预处理)

-I:指定头文件编译的第三方路径

-S:进行编译阶段

-c:进行到汇编阶段

-O1 -O2 -O3(编译优化):百度查分别做了什么

-w(关警告) -Wall(开警告) :开关警告信息

库文件

编译器gcc(静态库的动态库的制作和使用)

调试器gdb(常用命名,调用内存错误)

工程管理器make(makefile编写,多目录的Makefile的编写)

extern:该函数在其它文件已经定义

库函数:printf scanf strcpy strcat(保存在库文件)

库文件:保存函数和变量,里面的函数和变量只能使用,但是看不到其实现

库文件分类:静态库(.a) 和动态库(.so)

静态库(.a):保存的函数和变量,在编译阶段加载到可执行文件中

动态库(.so):保存的函数和变量,在执行阶段加载到执行文件中

使用静态库和动态库的区别(可执行文件的区别:)

使用静态库编译出来的执行文件>使用动态库编译出来的可执行文件大小 –影响内存的开销

使用静态库编译出来的执行文件执行速度>使用动态库编译出来的可执行文件执行速度

使用静态库编译出来的执行文件升级<使用动态库编译出来的可执行文件升级

使用静态库编译出来的执行文件程序部署>使用动态库编译出来的可执行文件程序部署

库文件的存放路径:

系统运行所需要的库文件:/lib

第三方软件和工具运行所需要的库:/usr/lib

编译时,编译器会自动到这两个目录里找所需要链接的库文件

制作静态库:

将目标源文件编译成目标文件:gcc -c 目标源文件(可以多个)(gcc -c add.c)

使用ar工具制作静态: ar -rcs(库不存在就创建,存在就更新)所要生成的库文件的名字(lib+库名+后缀.a)目标文件

例:ar -rcs libadd.a add.o

使用静态库:

-l:指定加载哪个静态库 -l库名

-L:指定加载的库文件的存放路径

gcc 源文件 -l库名 -L库存放的路径

例:gcc demo.c -ladd -L./libls

工程管理器make

什么是工程?

多个源文件+其他文件(图片+头文件+脚本文件)

工程管理器的作业:编译多个源文件

gcc +所有源文件 -o 可执行文件 —>自动编译

make依赖于Makefile文件;

Makefile文件是一种脚本文件(批处理),存在相关语法

Makefile语法:

三要素:目标、依赖、命令

格式:

目标:依赖

tab 命令

目标:最终生成的文件

依赖:生成目标时所需要的文件

命令:生成目标时,需要执行的命令

执行顺序:

make:默认从第一个目标体执行

make+ 目标体:从对应的目标体执行

如果目标体后面依赖的文件是一个目标的话,先执行依赖对应的目标,再执行目标体的命令

可以建makefile或者Makefile make -f Makefile -f指定执行那个Makefile

Makefile:

注释: #

目标可以用$@代替

d047452956c8f62b7083189265c2c7d.jpg

42d22545d60ea119fef6d12cfd1b10a.jpg

5847509ee6503919d54df75cdd86a9f.jpg

4d33b4117d350b4e781311ba376b229.jpg

a4ccbd772e7c8738d710c8024cb28cf.jpg

多级目录下的Makefile:

顶层Makefile:总控Makefile

子目录Makefile:功能Makefile

scripts目录Makefile:头文件Makefile

总控Makefile:进入各个功能子目录下执行make命令,将各个子目录下的.o文件链接成可执行文件

功能Makefile:将当前目录下的.c文件编译生成.o文件

头文件Makefile:定义一些变量

相关推荐:《Linux视频教程》

以上就是嵌入式linux开发工具有哪些的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/132495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 00:47:29
CF手游生化金字塔防守点在哪 防守位置介绍
下一篇 2025年11月29日 00:49:31

相关推荐

  • pip install sklearn和pip install scikit-learn究竟有何区别?

    pip install sklearn 和 pip install scikit-learn 的区别与联系 这两个命令看似相似,实则指向不同的包。它们的区别在于: pip install scikit-learn: 这是正确的安装 Scikit-learn 库的命令。它只安装 Scikit-lear…

    2026年9月1日
    000
  • 怎么修改一个部署集的名称和描述信息

    本篇文章给大家带来的内容是关于怎么修改一个部署集的名称和描述信息,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 ModifyDeploymentSetAttributes 请求参数 返回参数 全是公共返回参数。参阅公共返回参数。 示例 请求示例 https://ecs.aliyun…

    2026年9月1日
    000
  • CentOS 8 更新提示 appstream 错误

    在 centos 8 上进行更新时,如果遇到以下错误: Error: Failed to download metadata for repo appstream 完整的错误信息为: Error: Failed to download metadata for repo ‘appstream’: C…

    2026年9月1日
    000
  • Git pre-commit钩子失效了,如何排查?

    Git提交前代码检查失效的解决方案 许多开发者依赖pre-commit库在提交代码前自动运行代码检查脚本,以保证代码质量。然而,有时pre-commit钩子却无法正常工作,导致检查脚本未能执行。本文将分析pre-commit钩子失效的常见原因,并提供相应的解决方法。 问题:开发者已配置pre-com…

    2026年9月1日
    100
  • 悟空浏览器怎么做推文怎么做视频

    悟空浏览器本身不提供发布推文或制作视频的功能,它仅作为搜索素材和跳转平台的工具,用户需通过它获取热点信息后,自行在今日头条、抖音、小红书等平台创作并发布原创内容以赚取收益,真正实现盈利的核心在于持续的内容产出而非浏览器本身。 “悟空浏览器”本身是一款主打快速搜索、轻量浏览的手机浏览器,它并不直接提供…

    2026年9月1日
    100
  • win10电脑网卡驱动异常怎么办?

    windows 10用户群体十分庞大,它已经成为全球广泛使用的操作系统,然而,我们都知道微软在其新系统中难免存在一些不足之处。其中,windows 10无线网卡驱动问题尤为让人困扰,驱动程序的兼容性常常成为难题。那么,如何解决这种无线网卡驱动异常的情况呢?接下来,让我们一起来看看具体的操作步骤。 W…

    2026年9月1日
    000
  • 如何在指定的区域内删除一个部署集

    本文在介绍如何在指定的区域内删除一个部署集的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。 DeleteDeploymentSet 请求参数 返回参数 全是公共返回参数。参阅公共返回参数。 示例 请求示例 https://ecs.aliyuncs.com/?Action=Dele…

    2026年9月1日
    000
  • 指纹浏览器服务商是什么 主流指纹浏览器厂商对比评测

    指纹浏览器服务商通过深度伪装浏览器指纹和ip地址,为用户提供多个独立、防关联的浏览环境,以满足多账号管理、广告验证等需求;其核心技术在于对user-agent、canvas、webgl、字体、时区等数百项参数的精细化模拟与随机化处理,远超常规浏览器的无痕模式;主流厂商差异体现在指纹伪装的深度、性能稳…

    2026年9月1日
    000
  • 怎么简单快速的查询一个或多个部署集的属性列表

    怎么简单快速的查询一个或多个部署集的属性列表怎么简单快速的查询一个或多个部署集的属性列表怎么简单快速的查询一个或多个部署集的属性列表怎么简单快速的查询一个或多个部署集的属性列表

    本文在介绍怎么简单快速的查询一个或多个部署集的属性列表的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。 DescribeDeploymentSets 请求参数 返回参数 数据类型DeploymentSetType 示例 请求示例 https://ecs.aliyuncs.com/…

    2026年9月1日 用户投稿
    000
  • win10怎么新建一个本地管理员账户_win10创建本地管理员账户步骤

    1、可通过计算机管理、命令提示符或设置应用创建Windows 10本地管理员账户;2、计算机管理需新建用户并加入Administrators组;3、CMD使用net user和net localgroup命令快速创建并赋权;4、设置应用中添加其他用户后更改账户类型为管理员。 如果您需要在Window…

    2026年9月1日
    100
  • Win10 20H2怎么设置硬盘密码?

    Win10 20H2怎么设置硬盘密码?Win10 20H2怎么设置硬盘密码?Win10 20H2怎么设置硬盘密码?Win10 20H2怎么设置硬盘密码?

    最近有不少朋友升级到了win10 20h2版本,但对于新系统的操作还不太熟悉,尤其是不知道如何对电脑文件进行加密,也不清楚磁盘该如何加密。今天就为大家介绍一种在win10 20h2中设置磁盘密码的方法,快跟着步骤一起学习吧! Win10 20H2磁盘设置密码的详细步骤: 首先打开“此电脑”,然后右键…

    2026年9月1日 用户投稿
    000
  • 如何调用CreateKeyPair创建一对SSH密钥对

    本文在介绍如何调用createkeypair创建一对ssh密钥对的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。 CreateKeyPair 创建一对SSH密钥对。我们会为您保管密钥的公钥部分,并返回未加密的 PEM 编码的 PKCS#8 格式私钥。您需要自行妥善保管私钥部分。更…

    2026年9月1日
    100
  • HDC 2025:首批鸿蒙办公商用解决方案伙伴亮相,加速千行百业鸿蒙化

    HDC 2025:首批鸿蒙办公商用解决方案伙伴亮相,加速千行百业鸿蒙化HDC 2025:首批鸿蒙办公商用解决方案伙伴亮相,加速千行百业鸿蒙化HDC 2025:首批鸿蒙办公商用解决方案伙伴亮相,加速千行百业鸿蒙化HDC 2025:首批鸿蒙办公商用解决方案伙伴亮相,加速千行百业鸿蒙化

    6月20日-22日,华为开发者大会2025(hdc2025)在东莞松山湖盛大开启。作为鸿蒙生态年度重要盛会,全球开发者齐聚一堂,与华为携手用代码构建智慧时代的蓝图,共同见证这场科技盛宴。 华为终端旗下商用品牌华为擎云,也携其最新发布的首款鸿蒙商用笔记本电脑——华为擎云HM940亮相本届大会,并通过一…

    2026年9月1日 用户投稿
    000
  • MySQL如何实现实时数据同步_跨机房数据同步方案?

    MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?MySQL如何实现实时数据同步_跨机房数据同步方案?

    mysql实时数据同步在跨机房场景下的核心方案包括:1. 基于binlog的复制,通过slave节点读取master的binlog实现同步,优点稳定但受网络和负载影响;2. 基于gtid的复制,简化管理但需mysql 5.6+支持;3. mysql group replication,提供高可用但资…

    2026年9月1日 用户投稿
    000
  • 如何为一台或者多台 Linux 实例解绑 SSH 密钥对

    本篇文章给大家带来的内容是关于如何为一台或者多台 linux 实例解绑 ssh 密钥对,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 DetachKeyPair 为一台或者多台 Linux 实例解绑 SSH 密钥对。 描述 使用该接口时,请注意: 解绑 SSH 密钥对后,您需要重启…

    2026年9月1日
    000
  • 指纹浏览器到底是什么软件 多账号安全管理工具深度剖析

    指纹浏览器并非百分百安全,但它能通过模拟不同设备和浏览器环境、修改指纹信息、隔离cookie、分配独立ip等方式有效降低账号关联风险,广泛应用于跨境电商、社交媒体营销、广告投放、网络爬虫和游戏工作室等场景;选择时需综合考虑指纹真实度、ip质量、操作便捷性、团队协作功能、价格和技术支持等因素,并配合模…

    2026年9月1日
    100
  • 如何使用AppErrorManager优雅地处理API错误

    可以通过一下地址学习composer:学习地址 在开发一个 rest api 项目时,如何有效地捕获和处理 api 调用中的错误和异常一直是一个棘手的问题。最初,我尝试使用传统的方法在代码中逐个处理错误,但这不仅增加了代码的复杂度,还难以维护和扩展。幸运的是,我找到了一个名为 apperrorman…

    用户投稿 2026年9月1日
    000
  • 构建高效的API:使用Saturn/Taurus库的实践经验

    可以通过一下地址学习composer:学习地址 在开发一个新项目时,我面临着一个紧迫的任务:快速搭建一个轻量级的api平台。由于时间有限,我需要一个简单易用的框架。经过一番搜索,我发现了saturn/taurus这个库,并成功地将其应用于我的项目中,极大地提高了开发效率。 遇到的挑战 在项目初期,我…

    用户投稿 2026年9月1日
    100
  • 怎么快速简单的删除一对或者多对 SSH 密钥对

    本篇文章给大家带来的内容是关于怎么快速简单的删除一对或者多对 ssh 密钥对,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 DeleteKeyPairs 删除一对或者多对 SSH 密钥对。删除 SSH 密钥对后,我们不再为您保存该 SSH 密钥对,但是已经绑定的实例可以正常使用该 …

    2026年9月1日
    000
  • java学习应用篇|windows安装JDK及配置环境变量

    java学习应用篇|windows安装JDK及配置环境变量java学习应用篇|windows安装JDK及配置环境变量java学习应用篇|windows安装JDK及配置环境变量java学习应用篇|windows安装JDK及配置环境变量

    学习前言 实际上,本系统中最有价值的内容已经在前两篇文章中介绍完毕,接下来的内容主要是对前面知识的应用。新知识层出不穷,每隔几天就会有新的概念和框架出现。我们在本系列学习中,力求通过基本的学习方法来深入探究代码的本质,这样无论将来出现什么新的知识点,我们都能迅速学习并应用。小刀的水平有限,欢迎大家在…

    2026年9月1日 用户投稿
    100

发表回复

登录后才能评论
关注微信