实用工具
文章平均质量分 66
加油11
模仿模仿再模仿!
展开
-
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2017-04-12 21:08:38 · 456 阅读 · 0 评论 -
Linux相关快捷键
ctrl + c :在shell中输入命令时,按下ctrl + c代表取消当前输入的内容ctrl + l :在shell中可以用来清屏原创 2017-11-18 16:09:21 · 177 阅读 · 0 评论 -
window快捷键
1 win键相关win+E,资源管理器win+R,运行win+D,显示桌面,当按下后当前所有窗口全都最小化,再次按下这个组合键恢复刚才最小化的窗口WIN + M,最小化所有窗口,当按下后当前所有窗口全都最小化。再次按下这个组合键没反应(用WIN + Shift + M 还原刚才最小化的窗口)2 Alt相关Alt + Tab,或者Win+Tab(同时按住Shift,反向),用途:切换窗口原创 2017-07-09 17:28:02 · 288 阅读 · 0 评论 -
GDB简介
1 GDB简介什么是GDB? GNU项目中的调试器(gnu debuger),能够跟踪程序的执行,也能恢复程序崩溃前的状态。为什么需要GDB? 软件不是一次性开发完成的(是软件就有bug,是程序就有问题),调试是软件开发过程中不可或缺的技术(调试工具很重要)。GDB的常规应用自定义程序的启动方式(指定影响程序运行的参数)设置条件断点(在条件满足时暂停程序的执行)回溯检查导致程序异常结束的原原创 2017-09-14 21:35:36 · 1209 阅读 · 0 评论 -
链接器
1 揭开链接器的面纱问题 源文件被编译后生成目标文件,这些目标文件如何生成最终的可执行程序?链接器的意义 链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接目标文件的秘密各个段没有具体的地址,只有段大小信息各个标识符没有实际的地址,只有段中的相对地址段和标识符的实际地址需要链接器具体确定链接器工作的内容:将目标文件和库文件整合为最终的可执行程序合并各个原创 2017-08-10 20:15:24 · 2087 阅读 · 0 评论 -
交叉编译
1 什么是交叉编译背景 嵌入式设备往往资源受限不可能在嵌入式设备上直接对处理器进行编程解决方案 在开发主机(PC)上对源码进行编译最终生成目标主机(嵌入式设备)的可执行程序2 gcc是如何进行交叉编译的配置目标主机的编译工具链(如:arm-linux)配置工具链的具体版本 根据具体的目标代码选择相应的工具链版本正确使用关于硬件体系结构的特殊编译选项3 案例:大型企业嵌入式开发原创 2017-06-09 09:36:57 · 396 阅读 · 0 评论 -
开发中的辅助工具
1 什么是开发环境构建环境 代码编写,程序编译,版本控制(可选)调试环境 用于定位问题的辅助工具集测试环境 用于验证目标程序是否满足用户的显性需求和隐性需求嵌入式开发中的时间分配:代码编写及目标构建(20%)测试,调试,bug修复(80%)问题:如何提高开发效率?工欲善其事,必先利其器2 开发中的辅助工具GNU为GCC提供了配套的辅助工具集(Binutils)Binuti原创 2017-08-01 20:25:15 · 409 阅读 · 0 评论 -
函数定义及调用
1 makefile中支持函数的概念make解释器提供了一系列的函数供makefile调用在makefile中支持自定义函数实现,并调用执行通过define关键字实现自定义函数2 自定义函数的语法3 深入理解自定义函数自定义函数是一个多行变量,无法直接调用自定义函数是一种过程调用,没有任何的返回值自定义函数用于定义命令集合,并应用于规则中编程实验:自定义函数.PHONY : test原创 2017-07-25 06:48:01 · 397 阅读 · 0 评论 -
预定义变量的使用
1 在makefile中存在一些预定义的变量自动变量@,@, ^, $<特殊变量(MAKE),(MAKE), (MAKECMDGOALS), $(MAKEFILE_LIST)(MAKEVERSION),(MAKE_VERSION), (CURDIR), $(.VARIABLES)。。。2 自动变量的意义$@当前规则中触发命令被执行的目标$^当前规则中的所有依赖$<当前规则中的第原创 2017-07-09 19:51:07 · 407 阅读 · 0 评论 -
变量与函数的综合示例
1 实战需求自动生成target文件夹存放可执行文件自动生成objs文件夹存放编译生成的目标文件(*.o)支持调试版本的编译选项考虑代码的扩展性2 工具原料$(wildcard _pattern) 获取当前工作目录下满足_pattern的文件或目录列表$(addprefix _prefix, _names) 给名字列表_names中的每一个名字增加前缀_prefix3 关键技巧原创 2017-07-30 16:37:17 · 312 阅读 · 0 评论 -
条件判断语句
1 makefile中支持条件判断语句可以根据条件的值来决定make的执行可以比较两个不同变量或者变量和常量值注意事项 条件判断语句只能控制make实际执行的语句,但是不能控制规则中命令的执行过程2 条件判断语句的语法说明常用形式ifxxx (arg1,arg2)其它合法形式ifxxx “arg1” “arg2”ifxxx ‘arg1’ ‘arg2’ifxxx ‘arg1’ “arg原创 2017-07-16 08:40:39 · 456 阅读 · 0 评论 -
变量的高级主题
1 变量值的替换使用指定字符(串)替换变量值中的后缀字符(串)语法格式:$(var:a=b)或${var:a=b} 替换表达式中不能有任何的空格make中支持使用${}对变量进行取值 2 变量的模式替换使用%保留变量值中的指定字符串,替换其它字符语法格式:$(var:a%b=x%y)或$(var:a%b=x%y) 替换表达式中不能有任何的空格make中支持使用${}对变量进行取值模原创 2017-07-15 11:09:15 · 246 阅读 · 0 评论 -
变量和不同的赋值方式
1 变量makefile中支持程序设计语言中变量的概念makefile中的变量只代表文本数据(字符串)makefile中的变量命名规则 变量名可以包括字符、数字、下划线不能包含”:”, “#”, “=”或“ ”变量名大小写敏感变量的定义和使用编程实验:变量定义和使用CC := g++TARGET := hello-world.out$(TARGET) : func.o main.o原创 2017-07-05 09:52:27 · 600 阅读 · 0 评论 -
伪目标的引入
1 makefile中目标的本质思考:makefile中的目标究竟是什么?默认情况下: make认为目标对应这一个文件make比较目标文件和依赖文件新旧关系,决定是否执行命令make以文件处理作为第一优先级下面的代码有什么意义?编程实验:有趣的目标hello.out all : func.o main.o gcc -o hello.out func.o main.ofunc.o原创 2017-07-04 18:44:20 · 231 阅读 · 0 评论 -
初识makefile的结构
1 makefile的意义makefile用于定义源文件间的依赖关系makefile说明如何编译各个源文件并生成可执行文件2 依赖的定义makefile中元素的含义targets 通常是需要生成的目标文件名make所需执行的命令名称prerequisites 当前目标所依赖的其它目标或文件command 完成目标所需要执行的命令规则中的注意事项targets可以包含多个目标原创 2017-07-03 18:52:34 · 558 阅读 · 0 评论 -
make和makefile
1 make和makefilemake是一个应用程序 解析源程序之间的依赖关系根据依赖关系自动维护编译工作执行宿主操作系统中的各种命令makefile是一个描述文件 定义一系列的规则来指定源文件编译的先后顺序拥有特定的语法规则,支持函数定义和函数调用能够直接集成操作系统中的各种命令make和makefile之间的关系 makefile中的描述用于指导make程序如何完成工作,ma原创 2017-07-02 08:18:18 · 449 阅读 · 0 评论 -
嵌入式C语言编译器:GCC
1 GCC相关介绍GCC与gcc有什么不同?GCC(GNU Compiler Collection) GNU编译器集合,包含众多语言的编译器:C、C++、Java、D、Objective-C、etc。gcc:特指GCC中的C语言编译器GCC VS 嵌入式多数嵌入式操作系统都基于GCC进行源码编译 Linux、VxWorks、Android、etc。实际开发中的应用 内核开发:gcc原创 2017-06-09 09:13:18 · 2331 阅读 · 0 评论 -
多语言混合开发
1 多语言混合开发方式一示意图行业案例2 多语言混合开发方式二示意图行业案例3 多语言混合开发方式三示意图行业案例修改记录 时间 动作 2017.6.9 首次上传参考资料唐老师 — 狄泰软件学院 — 十二月提升计划李云 — 《专业嵌入式软件开发 全面走向高质量编程》原创 2017-06-09 10:05:10 · 2556 阅读 · 0 评论 -
编译、链接过程简介
1 初识编译器2 预编译处理所有的注释,以空格代替。将所有的#define删除,并且展开所有的宏定义。处理条件编译指令#if,#ifdef,#elif,#else,#endif。处理#include,展开被包含的文件。保留编译器需要使用的#pragam指令。预处理指令示例:gcc –E file.c –o file.i3 编译对预处理文件进行词法分析、语法分析和语义分析。 词法分析:原创 2017-11-14 21:15:06 · 238 阅读 · 0 评论