Linux 基础开发工具的使用

article/2025/8/14 6:56:41

目录

前言

一:下载工具yum

二:文本编辑器vim

1. 命令模式

2. 插入模式

3. 底行模式

三:gcc和g++

基本使用格式

常用选项及作用

编译过程示例

四、Linux 项目自动化构建工具 ——make/Makefile

1. make 与 Makefile 的关系

2. Makefile 的原理

3. Makefile 的推导规则

四:调试工具(gdb)

五.git

总结


前言

  本篇内容给大家带来的是在Linux下一些常见基础开发工具的使用,这些工具有些需要先下载好才能使用,如果一开始没有该工具,系统应该会提示要如何下载,也会有工具是需要经过配置的,大家多动动小手,搜搜教程,都不难配置的

工具:本质也是指令

一:下载工具yum

linux如何下载安装?

不同的社区,在自己的linux中,内置服务器和应用对应的下载链接——>yum(等同于手机上的应用商店)

可以通过yum搜索安装删除相应的软件

yum install 软件名:安装这个软件

yum lis:列举出可以安装的软件

yum remove 软件名 :删除这个软件

rzsz软件 rz :将win上文件传到linux上 sz:将linux上文件传到win上

二:文本编辑器vim

vim 是一种功能强大的多模式编辑器(类似记事本,但功能更丰富)

让我们来见一见vim

(我这个是配置过的,大家一开始打开vim可能会很简陋,得去搜教程配置一下才好用一些)

下面来介绍一下vim该如何使用

1. 命令模式

  • 进入方式:vim 打开之后的默认模式。
  • 模式切换
    • 输入i可从命令模式转到插入模式。
    • 输入shift + :可进入底行模式。
  • 光标定位操作
    • shift + 4:将光标定位到当前行的最后位置(行右)。
    • shift + 6:将光标定位到当前行的最前位置(行左)。
    • shift + g:将光标定位到最后一行的开始位置(底部)。
    • gg:将光标定位到第一行的开始位置(顶部)。
    • n + shift + g:将光标跳转至指定行,其中n代表行号。
  • 光标移动操作
    • h:向左移动。
    • j:向下移动。
    • k:向上移动。
    • l:向右移动。
  • 文本操作
    • 复制粘贴
      • yy:复制光标所在行(nyy:支持复制光标所在行及其后的n行)。
      • p:粘贴(np:支持粘贴n行内容)。
    • 撤销恢复
      • u:撤销操作。
      • ctrl + r:取消u操作(恢复撤销的操作)。
    • 删除剪切
      • dd:删除光标所在行(ndd:支持删除n行)。
      • ndd + p:实现剪切操作(先删除n行,再粘贴,等同于剪切)。
  • 文本编辑操作
    • 大小写切换shift + ~可切换文本行的大小写。
    • 批量替换shift + r可进行批量化替换。
    • 字符替换r可替换光标所在的一个字符(nr支持替换n个字符)。
    • 行内删除
      • x:向后删除一个字符(nx支持向后删除n个字符)。
      • X(即shift + x):向前删除一个字符(nX支持向前删除n个字符),删除后支持p进行粘贴。
    • 单词移动
      • w:向后按单词移动。
      • b:向前按单词移动。
    • 字词更改
      • c + w:更改光标所在处的字到字尾处。
      • c#w(如c3w):表示更改 3 个字。

2. 插入模式

  • 进入方式:输入i(在光标前插入)、a(在光标后插入)、o(在当前行下新开一行插入)可进入插入模式。
  • 退出方式:按esc回到命令模式。

3. 底行模式

  • 行号显示控制
    • set nu:显示行号。
    • set nonu:取消显示行号。
  • 分屏操作vs 文件名可分屏显示指定文件。无论分多少屏幕,始终只有一个光标。光标的跨屏移动操作是ctrl + ww 。
  • 执行 Linux 命令:在底行输入! ,可执行 Linux 命令。
  • 全局替换操作:格式为%s/要替换的原字符/要替换的新字符/g 。例如%s/cout/printf/g ,意思是把全局的cout替换成printf,其中g代表全局。

通用操作:无论是哪种模式,按esc就能回到命令模式。

三:gcc和g++

在 Linux 系统中,gccg++是 GCC 套件里用于编译 C 和 C++ 程序的重要工具 。gcc专门用于 C 语言程序编译,g++则用于 C++ 程序编译。虽然在编译 C 程序时二者表现可能相似,但处理 C++ 程序时,g++会链接 C++ 标准库,gcc默认链接 C 标准库。

基本使用格式

  • gcc (选项) 要编译的文件 (选项) (目标文件)
  • g++ (选项) 要编译的文件 (选项) (目标文件)

常用选项及作用

  • -E:仅进行预处理,处理宏定义、文件包含(#include )、条件编译(如#ifdef#ifndef#endif )以及删除注释等操作,不进行编译和汇编。例如gcc -E hello.c -o hello.i ,会生成预处理后的hello.i文件。
  • -S:生成汇编代码,在预处理、编译后停止汇编和链接步骤。如gcc -S hello.i -o hello.s ,会得到汇编文件hello.s 。
  • -c:生成目标代码(.o 文件),完成预处理、编译、汇编后,停止链接操作。像gcc -c hello.s -o hello.o ,可生成二进制目标文件hello.o ,但它还不能直接执行。
  • -o:用于指定输出文件名。比如gcc hello.o -o hello ,将hello.o与必要库链接后,生成名为hello的可执行文件。
  • -static:使用静态链接生成可执行文件,会把库代码直接复制到可执行文件中,文件较大,但运行时无需依赖库文件 。
  • -g:生成调试信息,供GDB等调试器使用。默认不指定该选项时,编译类似 Release 模式,进行优化但无调试信息;若要用GDB调试程序,编译时需加-g选项,如g++ -g my_program.cpp -o my_program 。

编译过程示例

一个 C 或 C++ 程序从源代码到可执行文件,通常经预处理、编译、汇编和链接四个步骤:

  1. 预处理:以 C 语言的hello.c为例,gcc -E hello.c -o hello.i ,对hello.c进行宏替换、文件包含展开等,生成预处理后的hello.i 。
  2. 编译gcc -S hello.i -o hello.s ,检查hello.i代码规范性、语法错误等,将其翻译成汇编语言,得到hello.s 。
  3. 汇编gcc -c hello.s -o hello.o ,把hello.s汇编代码转成机器可识别的二进制目标代码,生成hello.o 。
  4. 链接gcc hello.o -o hello ,将hello.o与程序所需库(如 C 标准库libc.so.6 )合并,生成最终可执行文件hello 。实际中,常直接用gcc hello.c -o hello ,一次性生成可执行文件。 对于 C++ 程序,如test.cpp ,使用g++ test.cpp -o test 即可编译生成可执行文件test 。

使用 g++ 编译时,通过 -std 选项指定支持 C++11 及以上标准 修改编译命令为 g++ test.cpp -o testcpp -static -std=c++11

四、Linux 项目自动化构建工具 ——make/Makefile

1. make 与 Makefile 的关系

  • make是一个命令工具,用于解释Makefile文件中的指令。
  • Makefile是一个文件,它带来的好处是实现自动化编译。一旦编写完成,只需执行一个make命令,整个工程就能完全自动编译,极大地提高了软件开发的效率。
  • make默认情况下只生成一个可执行目标文件,后续的依赖关系和依赖方法不再执行。

2. Makefile 的原理

Makefile的存在是为了构建项目,主要包含以下两方面:

  • 依赖关系:依赖关系可以为空。
  • 依赖方法
    • 语法示例
mycode:mycode.c  # 表示mycode依赖于mycode.c,这是依赖关系gcc mycode.c($^) -o mycode($@)  # 前面需用Tab键缩进,这是依赖方法,说明如何从依赖文件形成可执行程序# ($<:表示规则中的第一个依赖文件).PHONY:clean
clean:rm -f mycode# (.PHONY:被该关键字修饰的对象是一个伪目标,表示该目标总是被执行的)

举例:

原先是没有process_pool的

执行make代码

可以看到此时make之后就有对应的可执行程序了

使用make clean就可以删除对应的可执行程序(我们的make是只能顺着往下执行第一个脚本命令的,如果想执行其他的,就得写PHONY,然后在make后面指明对应的脚本)

  • 时间相关知识
    • 使用stat查看文件的三个时间,分别为最近访问时间(access)、最近修改内容时间(modify)、最近修改文件属性时间(change)。一旦修改了文件内容,文件属性也会被更改,因为文件属性包括文件大小,修改内容会影响大小。最近访问时间是在访问达到一定次数后才修改,否则如果访问太频繁,就要不断去磁盘中修改属性。
    • 对于gcc/g++来说,判断源程序是否需要重新编译是通过比较源程序和源文件最近被修改的时间来解决的。如果源文件时间晚于源程序,那就再进行编译一遍;若源文件时间早于源程序,则不需要编译。
    • touch除了创建文件之外,如果touch的文件已经存在,那么会更新文件的时间到最新。

3. Makefile 的推导规则

  • 示例代码及问题
mycode:mycode.og++ mycode.o -o mycode -std=c++11
mycode.o:mycode.sg++ -c mycode.s -o mycode.o -std=c++11
mycode.s:mycode.ig++ -S mycode.i -o mycode.s -std=c++11
mycode.i:mycode.cppg++ -E mycode.cpp -o mycode.i -std=c++11

推导的顺序是从下到上,因为读到最下面才有源文件。但一般不建议这样写,因为把简单问题复杂化了。

  • 简化写法
mycode:mycode.cpp g++ mycode.cpp -o mycode -std=c++11

四:调试工具(gdb)

调试,在方法上有区别吗?(与windows相比)

1.调试思路上,一定是一样的

2.调试的操作方式一定是不一样的--> 命令行调试

3.在linux中,用gcc/g++生成软件时,默认是release的,所以默认gdb中无法对发布的程序进行调试,如果要进行调试,就得在编译程序时把它设置成debug模式:在编译命令后面加上 -g

gcc/g++默认行为:

1.默认是动态链接的

2.默认是release

vim默认行为:

默认打开就是命令模式

gdb相关命令

gdb 可执行程序 :打开gdb

q:退出gdb

b 行号:在这一行打断点 --- 形成编号

info b:查看所打的断点信息 --- 看到编号

info locals:查看当前栈帧局部变量的值

d 断点的编号:删除断点 ---使用编号

l 0:显示程序代码

r:调试运行 --- run ,可以在断点处停下来

n:逐过程 --- next

s:逐语句 --- step

c:运行至下一个断点处 --- continue

bt:查看调用堆栈(函数调用的过程)

finish:直接运行到将对应的函数跑完

p 变量:显示该变量

display 变量:常显示变量(相当于vs下的监视)---会出现变量编号

undisplay 编号:删除常显示的变量

set var 变量:修改变量的值

until:跳转至指定行

五.git

1.git是什么? 答:一种分布式去中心版本控制器

2.(.gitignore):凡是在这个文件内部的后缀,对应的文件不会被上传到gitee上

3.所谓的git的仓库,本质就是一个目录.git加上里面的内容 (push到远端本质就是将你的.git里面的内容同步到gitee上)

注意:在使用它之前得做一下前置的工作,需要将你的linux系统和你的gitee或者github的某一个仓库进行连接,具体可以问问ai或者搜搜教程

相关指令

git add . :将我们新增的文件(以前没有的)添加到本地的git仓库,添加到临时区域
git commit -m '这是我的第一次提交'(''里面是日志,第一次一定要写并且不能乱写):把新增的文件提交到本地仓库  
git push :把本地仓库新增的内容提交到远端
git mv 原文件名 新文件名:已经提交到git的文件使用这条指令进行修改,然后再提交
git pull:把远端修改的文件拉到本地同步一下

(如果远端修改文件没有同步到本地,在本地是提交不了文件的)

在本地要同步删除远端文件的以下几步操作:

  1. git rm 要删除的文件名

  2. git commit -m "删除临时文件"

  3. git push git log:查看git记录

  4. git status:显示工作目录和暂存区的状态

总结

通过本篇文章的学习,相信大家已经了解了我们在linux操作系统中比较常用的几个开发工具,这些工具或多或少都会陪伴我们学习linux比较长的时间(除了gdb),大家尽量多熟悉熟悉。

到此篇为至,我们已经初步入门了linux操作系统的一些常见指令的使用、一些基本知识的了解,还有通过本篇文章的了解到一些常见开发工具的使用,我们接下来将会进入linux编程中各种系统理论部分的内容,这部分的内容可能稍微会比较多以及抽象,希望大家能够坚持下来(๑•̀ㅂ•́)و✧


http://www.hkcw.cn/article/oeNGKEQmMd.shtml

相关文章

清华大学教授李兆杰因病逝世 法学界痛失领军人物

5月29日晚,清华大学法学院发布讣告,沉痛悼念李兆杰教授。李兆杰教授于2025年5月29日在北京因病逝世,享年70岁。李兆杰教授是汉族,籍贯山东省东明县,1955年出生于吉林省长春市。他曾在北京大学国际法研究所和清华大学法学院任教。作为改革开放以来我国新一代国际法学者中的…

换完国货后才发现几千的工资够用了!

换完国货后才发现几千的工资够用了!责任编辑:zx0002

晚上10点睡和11点睡的区别!11点后睡觉浪费了人体的褪黑素

褪黑素的作用是帮助睡眠,其分泌量受光线影响:白天,褪黑素维持在很低的水平;晚上10点左右,褪黑素的分泌量迎来第一个拐点,分泌量开始陡然增加。22点入睡,正好与褪黑素大量分泌的时间契合,可充分发挥其促进睡眠的作用,提高入睡效率;如果到了23点才睡,敏感的人可能出现…

立志成为一名优秀测试开发工程师(第七天)——unittest框架的学习

目录 unittest框架的学习 一、测试类的编写 创建相关测试类cal.py、CountTest.py 二、常见断言方法 使用unittest单元测试框架编写测试用例CountTest.py 注意&#xff1a;执行的时候光标一定要放在括号后面&#xff0c;鼠标右键运行 三、对测试环境的初始化和清除模块…

断眉《歌手》将挑战单依纯或马嘉祺 网友票选对决对象

5月30日,湖南卫视歌手发布第二场揭榜赛制。微博网友可以从7位在线歌手中选择1位作为袭榜歌手查理普斯的对决对象。这7位在线歌手包括陈楚生、Mickey Guyton、GAI周延、白举纲、格瑞丝金斯勒、单依纯和马嘉祺。截止至当天17:00,推荐次数最高的歌手将作为守榜歌手,在节目中与袭…

罗家英第四次患癌 自曝剩9年寿命 乐观面对生命挑战

现年78岁的香港知名男星、老戏骨罗家英在接受媒体采访时透露,自己第四次确诊癌症,这次是前列腺癌。医生告诉他,还剩下9年寿命。有了前三次患癌的经历,罗家英对此表现得特别淡定。考虑到身体和年龄问题,罗家英拒绝接受化疗、电疗等治疗手段,选择顺其自然。他认为自己已经7…

断眉《歌手》合伙人是蒋一侨 音乐创作鬼才加盟

5月30日,湖南卫视《歌手》官方微博宣布查理普斯为袭榜歌手,他的音乐合伙人是蒋一侨。官博提到,查理普斯不仅才华横溢,现场演唱感染力十足,他将带来两首歌曲《Attention》和《See You Again》,但未透露他的袭榜对象。2024年5月31日晚,在《歌手2024》第四期的直播竞演中,…

【速通RAG实战:进阶】12、如何寻找大模型在企业业务中的价值?

一、大模型技术在企业级场景中的价值定位与核心维度 (一)技术价值演进:从效率工具到生产力革命 大模型(Large Language Model, LLM)与检索增强生成(Retrieval-Augmented Generation, RAG)技术的成熟,正推动企业数字化转型从「流程自动化」向「智能决策化」跃迁。根据…

Deepseek本次升级有多大提升 代码与文本能力显著增强

5月29日凌晨,DeepSeek-R1-0528正式在Hugging Face平台开源。此前一日,DeepSeek官方宣布DeepSeek-R1模型已完成小版本试升级,用户可通过官方网页、App、小程序进行测试,API接口和使用方式保持不变。此次更新中,模型代码能力的提升最为显著。知名代码测试平台LiveCodeBench显…

郑钦文vs姆博科 冲击16强硬仗

北京时间昨晚,法网女单第二轮较量中,中国球员郑钦文以6比2、6比3直落两盘击败哥伦比亚球员阿朗戈,连续第二年打进法网32强。接下来,郑钦文将面对世界排名120位的姆博科。尽管姆博科排名不高,但她的打法颇具冲击力。不久前,她在对阵世界前十球员巴多萨和高芙时表现出色,给…

主人讲述“中国狗王”的称霸之路 从山野猎手到国际网红

你见过不靠吼叫就能统治犬群的“狗王”吗?一只来自中国贵州山区的下司犬,最近在海外社交媒体上掀起风暴。它仅凭威严的姿态和沉静的眼神,就被外国网友封为“查尔斯国王”。这不禁让人思考:为何这只其貌不扬的中国土狗,能跨越语言和文化壁垒,成为全球网友追捧的“顶流”?…

信奥赛-刷题笔记-二分篇-T2-P1918保龄球0529

总题单 ​ 本部分总题单如下 【腾讯文档】副本-CSP-JSNOI 题单 (未完待续) https://docs.qq.com/sheet/DSmJuVXR4RUNVWWhW?tabBB08J2 二分篇题单 P1918 保龄球 https://www.luogu.com.cn/problem/P1918 题目描述 DL 算缘分算得很烦闷&#xff0c;所以常常到体育馆去打…

10年外卖员提醒一定要点堂食店:入口的东西千万不能马虎

近日,一消费者通过外卖平台购买的某品牌咖啡冰块中惊现完整苍蝇引发网友关注,随着天气逐渐炎热,外卖食品安全问题再次成为消费者关注的焦点。早在去年,央视就曾曝光的外卖平台“幽灵外卖”乱象,不少店铺不仅租借执照,甚至还和废品收购站开在一起,操作间的纱窗上结满了各…

佛山龙舟房东队称队员不都是房东 传承文化凝聚人心

去年端午节,广东佛山的沙步龙船队因队员黎国添的发言在网络上走红,被网友戏称为“房东队”。今年5月27日,有人现场观看了沙步龙船队的传统仪式“拜大廟”,并采访了黎国添本人。他不仅是沙步经济社社长,还是十几套房的房东以及光伏发电公司的老板。黎国添表示,虽然队里有房…

泡泡玛特客服回应黄牛门店扫货:界定存在难度

近日,有卖家在二手市场以8万价格打包转卖51个Labubu,款式均为绝版老款。随着Labubu系列潮流玩具爆火,部分隐藏款、绝版老款在二手市场的价格飙升至数万元。限量版、绝版Labubu二手市场价格飙升。图/二手交易平台截图Labubu是中国香港艺术家龙家升创作的北欧森林精灵形象,是…

上海成人吸烟率下降至18.6% 控烟成效显著

2025年5月30日是第38个“世界无烟日”,上海发布了最新的成人烟草流行调查核心数据。数据显示,上海成人吸烟率降至18.6%,为大陆地区省级最低。当天,以“拒绝烟草诱惑,对第一支烟说‘不’”为主题的宣传活动在上海虹口区举行。根据最新调查,上海成人吸烟率较2023年下降了0.…

友商谈小米YU7实车!

800万粉丝“说车的阿飞”,我记得这位博主还跟雷总一起直播过,人家亲自说明:“这次拍小米YU7,连八百块车马费都没有,就管了个中午的盒饭,几百个人都是纯邀请的,所以有一些媒体老师就会觉得小米不重视他,做内容自然会带着情绪做。”就像车圈那个梗,“800没有万”,导致行…

女子吃皮蛋口腔黏膜竟被灼伤 碱性过强惹的祸

近日,家住武昌区彭刘杨路的李女士吃了一口皮蛋后,口腔居然被灼伤了。口感清爽冰凉的皮蛋为何会灼伤口腔?端午节临近,李女士的友人送给她一盒包含粽子、咸蛋和皮蛋的礼盒。27日中午,李女士剥开一个皮蛋直接咬了一口,立刻感觉嘴里火辣辣的,像是针扎一样疼。她马上把嘴里的…

Linux系统网络管理

目录 一、网络参数配置 1、图形化配置 2、命令行配置 2.1、ifconfig命令 2.2、ifup和ifdown 2.3、ip a[ddress]命令 2.2、配置文件配置 3、路由配置 route命令 一、网络参数配置 1、图形化配置 systemctl start NetworkManager开启 systemctl stop NetworkManager关…

戴尔AI服务器订单激增至121亿美元 业务转型加速

戴尔科技最新财报显示,AI服务器需求的爆炸式增长正在重塑这家老牌PC制造商的业务格局,但也暴露出传统消费业务的疲软以及盈利能力的结构性挑战。周四美股盘后,戴尔公布了2026财年一季度财报,最引人注目的数据是121亿美元的AI服务器订单,这一数字不仅超过了公司整个2025财年…