Linux常用工具使用方式

news2024/11/18 5:35:37

目录

常用工具:

安装包管理工具:

 查找含有关键字的软件包

安装软件

安装文件传输工具

安装编辑器

C语言编译器

C++编译器

安装调试器

安装项目版本管理工具

cmake

卸载软件

安装jsoncpp

安装boost库

安装mariadb

安装tree(让目录以tree的形式进行显示)

卸载:

编辑器vim

vim的使用

普通模式:

插入模式:

底行模式:

基本操作

复制:

粘贴:

剪切/删除:

撤销:

对其以及行操作

光标移动:

翻页:

分屏:

编译器:

编译器进行代码解释的四个阶段:

预处理:

编译:

汇编:

链接:

链接:库

库文件

动态库&静态库

动态链接:

静态链接:

调试器:gdb

可执行程序分为两类:

debug程序--调试版:

release程序--发布版:

程序调试操作一:

程序调试操作二:

程序调试操作三:

程序调试操作四:

程序调试操作五:

项目的自动化构建工具:make&Makefile

Makefile:

make:

Makefile的编写规则:

make解释规则:

预定义变量:

伪对象:

项目版本管理工具:git


常用工具:

主要分类为:安装包管理工具(软件商店)、编辑器、编译器、调试器、项目自动化构建工具、项目版本管理工具、文件传输工具。

安装包管理工具:

 查找含有关键字的软件包

apt-cache search [关键字] 

安装软件

apt-get install [软件名] 

安装文件传输工具

apt-get install lrzsz

安装编辑器

apt-get install vim

C语言编译器

apt-get install gcc

C++编译器

apt-get install g++

安装调试器

apt-get install gdb

安装项目版本管理工具

apt-get install git

cmake

apt-get install cmake

卸载软件

apt-get remove [文件名]

安装jsoncpp

apt-get install libjsoncpp-dev

安装boost库

apt-get install libboost-all-dev

安装mariadb

apt-get install mariadb-server

apt-get install mariadb-client

apt-get install libmariadb-dev

安装tree(让目录以tree的形式进行显示)

apt-get install tree

卸载:

apt-get remove [软件名]

编辑器vim

背景:

unix开发出来后,出了第一款类unix平台编辑器vi,但是vi并不好用,因此vim出现。

vim是一个命令行编辑器,因此默认无法使用鼠标进行操作。

为了能够使vim使用更加方便,为此设计了多种操作模式,在不同的操作模式下,相同的按键会有不同的作用。

vim的使用

操作模式共有12种,而写代码的主要只有3种。

普通模式:

是对文档内容进行命令操作

插入模式:

对文档内容的编辑

底行模式:

对文档的保存以及退出操作

vim后边更上文件名,就可以使用vim打开文件,默认处于普通模式

基本操作

a:从光标后开始插入

o:新建一行

还有大写I A O

:        进入底行模式

w 保存

q 退出

q! 强制退出

X 保存并退出

ESC        进入普通模式

复制:

yy 复制一行 nyy从光标行开始复制n行内容

粘贴:

p np 粘贴n行剪切板内容

剪切/删除:

dd删除一行 ndd

x 删除光标所在的字符

ggdG 从首行删除到尾行

撤销:

U 撤销的撤销ctrl+r

对其以及行操作

全文对齐:按照代码风格进行缩进对齐

底行模式输入:

gg=G 对齐

gg 光标移动到文档首行

G 光标移动到末位一行

set number 显示行号

光标移动:

hjkl 左下上右移动光标

w/b 以单词左右移动

翻页:

ctrl+f / ctrl+b 上下翻页

分屏:

进入底行模式输入vnew,新建一个窗口,分屏操作

ctrl+ww切屏

编译器:

将高级语言代码解释成为机器可识别的指令(不同的语言有不同的编译器)

C语言:gcc,msvc,clang.....

C++语言:g++

编译器进行代码解释的四个阶段:

预处理:

头文件引用,去除注释,宏替换...

编译:

进行语法,语义纠错,没有错误则将代码解释成为汇编指令

汇编:

将汇编指令,解释成为机器能识别的二进制指令。

链接:

将所有的机器代码(不同.c生成的文件,库文件)进行打包生成一个可执行程序

gcc编译器常用选项:

-E 只进行预处理

-S 只进行编译

-C 只进行汇编

-O 指定生成的文件名称

如果gcc不跟其他选项,那么生成的就是可执行程序

gcc -E main.c -o main.i

gcc -S main.i -o main.s

gcc -C main.s -o main.o

链接:库

在系统中,有一种文件叫做库文件:是进行特定功能,提前封装实现的函数,经过预处理,编译,汇编,打包之后生成的一个提供给别人使用的代码文件

库文件

虽然也是大量的二进制代码打包文件,但是它没有main函数。(因为一个代码里是不能出现两个main函数的。)

动态库&静态库

编译器的链接方式:

动态链接:

链接的是动态库,链接的时候,并不会将库中函数的实现指令给程序中也复制一份,而是只记录了一份符号表到程序中。

优点:

生成的可执行程序比较小

多个程序如果使用了相同的库文件,,实际的库函数代码在内存中就会只加载一份

缺点:

运行程序的时候,需要加载库文件,会耗费时间

多个程序加载时,都会先去扫瞄是否存在该库。

静态链接:

链接的是静态库,链接的时候,是将库中具体用到的函数

优点:

运行时不依赖库文件的存在(具体用到的代码是存在的)

缺点:

生成的可执行程序比较大,如果多个程序都用到了同一个静态库中的代码,则多个程序运行起来后,内存会存在冗余。

gcc默认链接方式:

动态链接(在同一个目录下,有同名的动态库文件,静态库文件lib.so,libc.a,这时候优先链接动态库)

调试器:gdb

作用:

调试程序的运行过程,排查程序运行结果结果不符合预期的原因。

可执行程序分为两类:

debug程序--调试版:

程序员调试程序运行的过程,调试错误

release程序--发布版:

测试人员测试的版本,以及交付的版本

gcc编译器对程序进行编译,最终生成的可执行程序,默认是release版本

然而release版程序是无法被调试的(因为程序中没有调试符号信息,并且代码有可能进行了优化)。

程序调试操作一:

生成debug版本程序

gcc编译链接的时候

gcc -g 生成debug版本程序

程序调试操作二:

使用gdb加载程序

gdb ./main

程序调试操作三:

各种不同的调试指令

1:开始运行程序:run

2:逐步调试程序:start

3:查看调试行附近代码:list main.c:[行号]

如until main.c:9

程序调试操作四:

next--逐过程--遇到函数则直接将函数执行完

step--逐语句--遇到函数则进入函数对函数内部进行逐步调试

程序调试操作五:

直接将代码运行到指定行:until main.c:[行号]

程序调试操作六:

从当前调试位置,开始运行:continue

程序调试操作七:

打断点--让程序运行到指定位置停下来等待调试:break main.c:19 break func

程序调试操作八:

查看断点信息:info break

程序调试操作九:

删除断点:delete [断点编号(info break前方会显示断点编号)]

程序调试操作十:

查看调用栈 backtrace

程序运行一旦崩溃,则调用栈的栈顶函数就是当前导致程序崩溃的代码。

程序调试操作十一:

查看变量内容 print [变量]

程序调试操作十二:

设置变量内容 print [变量]=10

程序调试操作十三:

给变量打断点 watch

项目的自动化构建工具:make&Makefile

Makefile:

就是一个常规的文本文件,但是搭配了make就不一样了

Makefile可以记录项目的构建规则

然后通过make对规则进行解释执行

make:

就是一个Makefile解释程序,会对Makefile中记录的规则按照一定语法规则进行解释执行,最终完成项目的构建

make的执行,会到执行make指令所在的目录下查找Makefile文件,找到了就执行,找不到则会报错。

注意:Makefile文件名是固定的,可以是Makefile或者makefile。其他的都不行

Makefile的编写规则:

[目标对象]:[依赖对象]

\t指令

make解释规则:make会在makefile中找到第一个目标对象

1、检测目标对象文件是否存在

有:则会检测目标对象文件与依赖对象文件的时间关系,判断目标是否需要重新生成(在目标文件上次生成后,源码有没有修改过)

没有:则需要生成

2、如果需要生成,则会检测依赖文件是否存在,是否需要生成因此会到下边找寻依赖文件的生成规则,先生成依赖文件,最终依赖文件都生成后,再去生成目标文件

3、第一个目标对象文件生成后,则退出。所以要把最后想生成什么放在第一行

make解释规则:

1、在执行make指令的目录下,查找Makefile文件进行解释

2、在Makefile中,找到第一个目标对象

3、根据目标与依赖的时间关系,判断目标对象是否需要重新生成,不需要则直接退出。

4、判断依赖对象是否需要生成。如果需要则查找依赖对象的生成规则。进行生成

5、执行指令,完成目标对象的生成后退出。

makefile中的其他简化操作:

预定义变量:

  • $^ 当前编译规则的所有依赖对象
  • $< 当前编译规则中第一个依赖对象
  • $@ 当前编译规则中的目标对象

wildcard获取指定目录下特定规则的文件名

patsubst对字符串进行内容替换,将.c替换为.o

伪对象:

使用PHONY声明一个对象为伪对象

作用:分离目标对象与实际文件之间的关系

(声明makefile中的目标对象是一个假的对象,与实际的文件没有关系。)

这样的话,目标对象的编译规则中的指令无论如何都会被执行。

(为了让一个指令不受外部文件影响,每次都执行。比如有时候.o是最新的,就会导致不会运行make,或者说外面有一个clean的文件,再使用make clean它就不知道执行什么,所以需要这样一个设置。)

项目版本管理工具:git

项目的版本管理:说白了就是将不同提交版本的代码给备份起来以备回滚,以及容灾。

版本管理的工具种类:svn,git,......

1、克隆远程仓库:git clone [地址]

比如gitee的地址在:

点击http

2、添加修改项:git add --all ./

3、提交版本:git commit -m [本次版本的备注]

4、远程推送:git push origin master

⚠️提示⚠️:比如今天在a文件内提交了main1到master在b文件内也想提交main2到master,那么应该先进行pull再进行main2的提交。

git教程参考网址:

Wiki - Gitee.com帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多语言跨境商城系统怎么选择

随着全球化的推进和电子商务的蓬勃发展&#xff0c;跨境电商已经成为了一个不可忽视的商机。不同国家和地区的语言和文化差异给跨境电商带来了一定的挑战。为了顺利运营跨境电商平台&#xff0c;选择一款适合的多语言跨境商城系统至关重要。但在众多系统中选择合适的一款&#…

探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案

BOSHIDA 探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案 DC/AC电源模块是一种能够将直流电源转换为交流电源的装置。随着绿色能源的不断发展和应用&#xff0c;DC/AC电源模块在可再生能源、电动车辆、太阳能发电等领域中扮演着重要的角色。本文将着重探讨DC/AC电源模…

3DMAX折纸插件FoldPoly使用方法详解

3DMAX折纸插件FoldPoly使用教程 3DMAX折纸插件FoldPoly&#xff0c;用于挤出可编辑多边形的边&#xff08;边界&#xff09;并可旋转&#xff08;折叠&#xff09;新生成的面&#xff0c;创建类似手工折纸以及纸箱包装盒的建模效果。 【版本要求】 3dMax2014 - 2025&#xff…

2024最新!将mysql的数据导入到Solr

Solr导入mysql的数据 如何安装导入数据前准备配置Solr的Jar包以及Mysql驱动包1.1、将solr-8.11.3\dist下的两个包进行移动1.2、将mysql-connect包也移动到该位置1.3、重启Solr项目 配置xml2.1、第一步我们需要创建核心2.2、第二步修改xml(这里是结合19年的教程)2.3、 创建data-…

Soul社交元宇宙智能连接安全相伴,打造值得用户信赖的社交环境

随着人工智能技术的快速发展,社交平台正在迎来一场革命性的变革。从智能推荐到情感分析,社交平台通过深度学习和数据分析为用户提供更加个性化、智能化的社交体验。与此同时,数字时代人们的安全意识正逐渐增强。为此,一个智能、安全的社交平台成为人们迫切需要。而新型社交平台…

Baidu Comate专业版90天免费试用,上班摸鱼好帮手

Baidu Comate专业版&#xff0c;扫描图中二维码或者点击链接下载安装&#xff0c;即可获得Baidu Comate专业版90天免费试用&#xff0c;支持idea、vscode、eclispe。它结合了百度大数据和文心大模型&#xff0c;为开发者们提供了更智能、更高效的编程体验&#xff0c;上班摸鱼好…

教师备课三要素是指什么内容

在教育的舞台上&#xff0c;教师的角色至关重要。他们不仅是知识的传递者&#xff0c;更是学生学习路上的引导者。那么&#xff0c;教师备课的三要素究竟是什么呢&#xff1f;这不仅是每个教师在教学过程中必须面对的问题&#xff0c;也是他们不断探索和实践的课题。 教师备课的…

layui+jsp项目中实现table单元格嵌入下拉选择框功能,下拉选择框可手动输入内容或选择默认值,修改后数据正常回显。

需求 table列表中的数据实现下拉框修改数据&#xff0c;当默认的下拉框不符合要求时&#xff0c;可手动输入内容保存。内容修改后表格显示修改后的值同时表格不刷新。 实现 layui框架下拉框组件只能选择存在的数据&#xff0c;不支持将输入的内容显示在input中的功能&#x…

基于IMX8MPlus SMARC核心板的便携式床旁超声诊断仪应用解决方案

医学的高速发展&#xff0c;使得超声仪器得到了广泛的普及&#xff0c;便携式的床旁超声诊断仪&#xff0c;不仅满足临床医学对可视化、便携式、智能化的需求&#xff0c;还能满足基层患者随时随地快速筛查的需求。 便携式的床旁超声诊断仪&#xff0c;移动灵活方便&#xff0c…

Steam商店报错、进不去 Steam105错误代码的处理方法

逛Steam商店现在已然成为大部分游戏玩家每日必做的事情之一&#xff0c;玩家们在商店浏览、购买并享受各种类型的游戏和应用&#xff0c;找到适合自己的一款&#xff0c;最近steam夏促活动正在进行&#xff0c;很多玩家都前往Steam商店查看各种低价游戏&#xff0c;但是很多玩家…

C++(第一天-----命名空间和引用)

一、C/C的区别 1、与C相比   c语言面向过程&#xff0c;c面向对象。   c能够对函数进行重载&#xff0c;可使同名的函数功能变得更加强大。   c引入了名字空间&#xff0c;可以使定义的变量名更多。   c可以使用引用传参&#xff0c;引用传参比起指针传参更加快&#…

潜水耳机哪个牌子好?用户精选,这四款潜水耳机质量上乘!

在这个快节奏的时代&#xff0c;人们越来越渴望在运动中也能享受到音乐的陪伴。潜水&#xff0c;作为一种独特的水下运动&#xff0c;自然也不例外。然而&#xff0c;并非所有的耳机都能承受水下的压力和环境&#xff0c;这就要求我们对潜水耳机有着更高的要求。作为一名资深的…

美团外卖搜索基于Elasticsearch的优化实践--图文解析

美团外卖搜索基于Elasticsearch的优化实践–图文解析 前言 美团在外卖搜索业务场景中大规模地使用了 Elasticsearch 作为底层检索引擎&#xff0c;随着业务量越来越大&#xff0c;检索速度变慢了&#xff0c;CPU快累趴了&#xff0c;所以要进行优化。经过检测&#xff0c;发现…

揭秘LLaMA 2:深度学习的未来,从原理到模型训练的全面剖析

引言 LLaMA&#xff08;Large Language Model for AI Assistance&#xff09;2 是 Meta&#xff08;原 Facebook&#xff09;开发的一个大型语言模型&#xff0c;旨在为各种自然语言处理任务提供强大的支持。它在前代基础上进行了改进&#xff0c;具有更好的性能和更广泛的应用…

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection 论文链接&#xff1a;http://arxiv.org/abs/2406.03459 代码链接&#xff1a;https://github.com/Atten4Vis/LW-DETR 一、摘要 介绍了一种轻量级检测变换器LWDETR&#xff0c;它在实时物体检测方面超越…

Flutter集成高德导航SDK(Android篇)(JAVA语法)

先上flutter doctor&#xff1a; flutter sdk版本为&#xff1a;3.19.4 引入依赖&#xff1a; 在app的build.gradle下&#xff0c;添加如下依赖&#xff1a; implementation com.amap.api:navi-3dmap:10.0.700_3dmap10.0.700navi-3dmap里面包含了定位功能&#xff0c;地图功能…

技术反诈指南丨央视报了!基于“AI换脸”的新型电信网络诈骗猖獗

目录 利用“AI换脸”技术的诈骗 技术上防范新型电信网络诈骗 内蒙古鄂尔多斯市居民李女士近日遭遇了一起新型电信网络诈骗案。诈骗团伙利用“AI换脸”技术&#xff0c;合成了与李女士老同学相似的视频通话&#xff0c;以此作为诈骗的关键手段&#xff0c;成功骗取李女士信任。 …

[数据质量]手动实现 阿里云DataWorks 的数据质量监控告警功能

目录 手动实现 DataWorks 的数据质量监控告警功能1. 简介:2. 数据表准备2.1 tmp_monitor_tbl_info (数据监控信息表)2.2 tmp_monitor_rule_info (数据质量监控规则表)2.3 tmp_monitor_tbl_info_log_di (数据监控信息记录表) 3. 程序开发3.1 数据检查程序3.2 告警信息推送程序3.…

Navcat Premium17破解安装及数据库连接教程

一、前言 Navicat Premium 是一套数据库开发工具&#xff0c;是一个可多重连接数据库的管理工具。Navicat Premium让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。目前17已经支持了很久都没有支持的Redis数据库了。…

大数据之Zookeeper部署

文章目录 集群规划环境准备集群部署参考资料 集群规划 确定使用Hadoop101、hadoop102和hadoop103三台服务器来构建Zookeeper集群。 hadoop101hadoop102hadoop103zookeeperzookeeperzookeeper 环境准备 安装zookeeper前需要确保下面的环境配置成功&#xff0c;具体可以参考大…