linux软件开发工具
这本阿里P8撰写的算法笔记,再次推荐给大家,身边不少朋友学完这本书最后加入大厂:
Github 疯传!史上最强悍!阿里大佬「LeetCode刷题手册」开放下载了!
vi编辑器是Linux系统上常用的文本编辑器 vim 是vi的改进版本,增加了很多扩展功能,使之更适合编辑各种程序语言的源代码。 vim官方:vim不是文字处理软件,而是程序开发工具
Vi/vim命令模式的分类
一般模式(打开vi时默认进入一般模式) 可以移动光标,可以删除文字,可以复制粘贴(通过命令) 命令输入完毕就执行,不需要回车确认。执行完毕后还在一般模式下。
插入(编辑)模式 在一般模式下,输入【a,A,I,i,o,O,r.R】,可进入编辑模式。 输入模式下按ESC,可返回命令模式。
底行命令模式 作用:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。 在一般模式下输入":"或者"/"为前导指令,出现在屏幕的最下一行,任何输入都被当成特别指令。 输入命令需要回车确认才执行,执行完毕后返回一般模式。
GCC工具链
GNU/Linux系统上常用的编译工具是GCC。GCC实质上不是一个单独的程序,而是多个程序的集合,因此通常称为工具链。
从C语言源码到可执行程序一般要经过以下的处理步骤:
预处理 在这一阶段,源码中的所有预处理语句得到处理,例如 #include语句所包含的文件内容替换掉语句本身 所有已定义的宏被展开 根据#ifdef,#if等语句的条件是否成立取舍相应的部分 预处理之后源码中不再包含任何预处理语句。 GCC预处理阶段可以生成.i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如: gcc -E hello.c -o hello.i
编译 这一阶段,编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。 可以通过选项-S使GCC在进行完编译后停止,生成.s的汇编程序。例如: gcc -S hello.c -o hello.s
汇编 这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。 当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成.o目标文件后,才能进入下一步的链接工作。 目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件: gcc -c hello.c -o hello.o
链接 链接的主要内容是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。
比如:hello程序调用了printf函数(标准c库中的一个函数)
而printf函数存在于一个名为printf.o的单独的目标文件中。
链接器负责并入printf.o,结果得到hello文件,使其成为一个可执行目标文件(或者简称为可执行文件)。 gcc hello.c -o hello
make工具
假设:一个软件工程包含几十上百个文件,我每次调试只修改其中几个个文件,如果用简单的GCC编译器,会有什么麻烦?
1用GCC再次编译时,其他没有修改的文件也要进行再次编译,浪费时间。 2.每次都要输入很长的GCC命令,使用麻烦。
解决办法:使用make工具,解决以上两个问题
make工具的基本用法如下: make [-C dir] [-f file] [target ...] -C dir: 执行时进入dir目录,默认是当前目录 -f file: 使用file作为Makefile target: 要完成的目标,目标在Makefile中定义,默认是定义的第1个目标
GDB调试工具 GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。当程序暂停执行时,可以使用命令查看程序中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。 使用GDB调试可执行文件之前: 被调试的应用程序在编译时使用-g参数将调试信息编入目标文件中: gcc -g app.c -o app 用以下命令启动对程序app的调试: gdb app
启动后进入GDB交互界面,可以输入GDB的命令开始调试,常用命令如下,通常直接回车就是重复上一条命令。
———————————————— 版权声明:本文为CSDN博主「打南边来的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42717879/article/details/81220416
这本阿里P8撰写的算法笔记,再次推荐给大家,身边不少朋友学完这本书最后加入大厂:
Github 疯传!史上最强悍!阿里大佬「LeetCode刷题手册」开放下载了!
以上就是良许教程网为各位朋友分享的Linux相关知识。
linux软件开发工具相关推荐
- 爱招飞软件开发工具与 Arduino 与 ESP32 的关系
为何使用开发板进行物联网开发工作? 国内机电产业环境大部分以硬件为主,对于软件设计人员,缺乏硬件专业训练,或是对于机械机构与机电整合原理没有概念.在学习机电整合设计时,会有很多的困扰与障碍,因为 ...
- 国外顶级软件开发工具和平台汇总
1.Terminal 我们都在使用终端,有些人每天使用,而有的人相对没有那么高频率.终端是可以执行进程的命令行,用处非常多,可以使你的工作更快.只需一个命令,而不是通过整个菜单,你就可以在文件之间移动 ...
- 谈软件开发工具的选择
孙志永.蔡茂(转载自中国计算机报) 2002年08月19日 我国的软件开发已经逐步从原来的手工作坊式发展到了软件工程的阶段.同时,软件开发本身也在不断发展,已从"算法+数据结构=程序&q ...
- 程序员最喜欢的22款软件开发工具
市面上有海量的软件开发工具,因此,选择最佳软件开发工具可能是一项挑战.本文是 22 款顶级软件开发工具的精选列表. 我们将软件开发工具分为以下几类: 推荐工具 IDE (集成开发环境) 框架 云工具 ...
- 学嵌入式Linux软件开发需要的知识
首先,我得声明嵌入式Linux的内核很重要,非常非常重要!但是这个东西如果你没有一定的基础,还是暂时不碰为好.因为想知道它的工作机理,你必须具备N多知识才可以的.弄明白内核(包括驱动和协议栈,以及内核 ...
- 自考之——我看《软件开发工具》
<软件开发工具>由理论篇和实践篇构成.实践篇是选取一种详细的软件开发工具Eclipse来进行介绍,帮助我们加深对软件开发工具的理解.在这篇文章里,我就不说这部分内容了. 这里,我主要是对理 ...
- 天翼云从业认证(1.8)了解软件开发的环境、软件基础架构和常用软件开发工具
常用开发环境 软件是一系列按照特定顺序组织的计算机数据和指令的集合. 软件特点 软件开发流程:调研沟通/获取需求.需求分析.产品设计.界面设计.设计原型图.程序编码.测试.打包发布.产品上线 软件开发 ...
- Valgrind ---内存调试,内存泄漏检测以及性能分析的软件开发工具
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具.Valgrind这个名字取自北欧神话中英灵殿的入口. 一般使用方式 valgrind --leak-check=full ...
- 软件开发工具(第1章:绪论)
一. 软件开发工具的由来 计算机语言和软件开发工具的发展和历史 机器语言(第一代语言):难以记忆的.无意义的.二进 制的字符串 汇编语言(第二代语言)针对难以记忆的.无意义的.二进 制的字符串.人们试 ...
最新文章
- 密恐警告:超2000万张,全球最大的人眼图像数据集开源了
- 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET
- Java程序员必备:序列化全方位解析
- Istio Pilot 源码分析(二)
- RFC2616中文版(8)连接
- 遇到个别手机前置摄像头相差90度的怪事
- matlab ctrl c,Matlab:实现CTRL + C的功能,但在代码中
- 太牛X了! 呕心沥血整理的4000页Java学习手册文档!
- MySQL配置+SQLyog安装教程
- Android 计算网络速度文件下载剩余时间<<最优方案>>
- 分时操作系统与分布式操作系统
- matlab光学原理仿真应用衍射,基于Matlab的光学衍射实验仿真
- java经纬度格式_java经纬度格式转换
- Excel:INDEX函数与MATCH函数
- DL3 - optimization algorithms
- ps制作浮雕和投影效果
- leJOS EV3 Eclipse Mac 总结
- Caffe2 - (十六) 创建 LMDB 数据库
- Qt实战:云曦日历篇
- DMap(谛听)——实战Vue百万条数据渲染表格组件开发
热门文章
- 如何做出html直角梯形效果,css怎么做梯形?
- python绘制图形微格课_智慧职教MOOCPython程序设计章节测试答案
- 【获奖公布】征文 | 你会为 AI 转型么?
- CAD怎么打印黑白图纸?超简单的打印方法分享
- Sushi 的一周:五月 Miso,银座寿司店接受 SUSHI 支付,上线 Gemini | 2021.4.26-5.2
- MySQL复合索引 in查询,mysql 联合索引 in查询是否生效
- 蔡勒公式和基姆拉尔森计算公式
- 使用Python生成股票K线图
- 【网格生成】Gmsh快速入门教程 --2.“geo”脚本方式使用
- 如何让图片按比例响应式缩放、并自动裁剪的css技巧