Linux基础开发工具重制版vim,gcc/g++
一.软件安装的两种方式1.源码安装(极其不推荐)在Linux下安装软件,⼀个通常的办法是下载到程序的源代码,并进⾏编译,得到可执⾏程序。但是版本兼容编译代码都会有很多问题这种办法不推荐。2.软件包推荐的安装方式但是这样太⿇烦了,于是有些⼈把⼀些常⽤的软件提前编译好,做成软件包(可以理解成windows上 的安装程序)放在⼀个服务器上,通过包管理器可以很⽅便的获取到这个编译好的软件包,直接进⾏安 装.软件包和包管理器的关系就可以看作软件和应用市场的关系。yum(YellowdogUpdater,Modified)是Linux下⾮常常⽤的⼀种包管理器.主要应⽤在Fedora, RedHat, Centos等发⾏版上.Ubuntu主要使⽤aptAdvancedPackageTool作为其包管理器。apt同样提供了⾃动解决依 赖关系、下载和安装软件包的功能。我们推荐使用包管理器去安装软件。在弄清为什么之前我们要先明白一个概念——软件依赖。一个软件能够跑起来背后并不是只有这个软件本身支持的还依赖其他的软件或库。而包管理器有个优势——自动解决软件依赖问题。在用包管理器安装软件时会自动去查找支持软件运行的其他软件或库是否已安装如果没有安装就会在安装软件本身的同时也将相关的其他软件或库也一并安装上。二.操作系统好坏的评估标准——生态三.为何有人会在免费社区开源软件甚至提供服务器供你下载天下没有免费的午餐那这些开发者为啥个个像慈善家一样去贡献自己的劳动成果原因在于开源也算是一种商业模式。在足够多的用户或厂商对某个开源软件形成依赖后为了防止开发者因恰不上饭而终止该软件的开发维护等进而损害到软件使用者的利益就会给其开发者带来利益支持包括但不局限于捐钱捐服务器等。四.下载流程与镜像下载的整个流程下载不是要链接吗那个人的云服务器是怎样找到链接的答案是服务器内置链接:www.centos.org。镜像但由于这玩意的服务器在国外国内没法访问这时就有厂商会定期将外网的那套生态拷贝一份并更改下载链接(切换镜像源)这就是镜像。然后国内下载就会走镜像这条路而非直接上官网。五.安装软件(Ubuntu环境下)——工具apt的具体操作安装apt intall 软件(文件)名卸载apt remove 软件(文件)名删除与安装的示例:sl的执行结果挺有意思的:查找apt下某个软件aptlist软件名 | grep六.linux编辑器——vim1.啥是编辑器编辑器 专门用来编辑文字、代码、文本文件 的软件核心功能打字、修改、保存文本。2.与vim简单一见①.输入vim回车即可进入vim②.进入后想退出Ⅰ.冒号q记住:冒号 wq是保存并退出。写完代码退出vim时要用wq,不然会报未保存的错误。Ⅱ.按两下大写Z并按回车。③.利用vim写源代码先创建.c文件随后输入vim 文件名.c用vim打开code.c便能编写代码。但是未经配置的vim还是比较鸡肋的它没有任何报错代码补全就相当于是一个记事本。写完代码后按shift冒号然后输入wq并回车便能做到保存并退出。然后输入gcc 文件名.c进行编译输入./a.out运行代码。3.vim的多模式如果我说上面能在vim里输入东西都算是巧合你信吗doge当笔者第一次在vim输入的时候除了发出叮叮的警告其他啥都没有然后退出vim也输不进去东西。这是由于vim是一款多模式编辑器此刻的vim处在命令模式里该模式是初入vim时默认的模式。而想要编写代码需要切换到另一个模式——插入模式。如何切换呢只需要按一个i并回车就行。当窗口左下角出现一个insert时就说明进入了插入模式就能正常编写代码。但编写完要在何处输入指令退出呢答案是按Esc键回退到命令模式然后输入shift冒号qw退出。但是这个shift冒号是个啥玩意呢它是切换到底行模式的指令。是的并不能在命令模式下退出而是要切换到底行模式才可以。底行模式下几个指令q:退出vimw:保存wq:保存并退出set nu:显示行号set nonu:取消显示行号q!/w!:强制退出/保存shift zz,即两个Z:强制退出!gcc 文件名.c:对文件的代码进行编译!ls -al:编译通过后使用该指令就可以生成a.out文件!./a.out:执行a.out文件里的代码%s/dst/src:用后者替换前者。vs 另一个文件文件名.c:分屏ctrlww:将光标从分屏的一个文件跳到另一个文件。命令模式下几个指令命令模式便于我们快速编辑。关于光标的指令gg:光标快速回到第一行。shift g,即G:光标快速到结尾。n shift g,即n G:光标快速定位到第n行。shift $:光标定位到当前行结尾。shift ^:光标定位到当前行开头。page Up/Dn/Home/End;k,j,h,l:光标上下左右移动。w:以单词为单位向后移动。b:以单词为单位向前移动。w/b前面也能带上数字表示向前/后移动n个单词。编辑指令yy:复制当前行。p:在光标所在位置下一行粘贴当前行的内容。yy/p依旧能在前面加n表示复制自当前行开始(包括当前行)向下/粘贴当前行内容 n行。u:撤销当前指令。ctrlr:撤销u指令。dd:可配合p使用就叫剪切即将当前行剪掉并复制到某一行。单独使用就叫删除。dd还是能带n表示将当前行及其以下共计n行的内容剪切/删除。p在这里带n表示将剪切的内容重复粘贴n次。x:删除当前行光标所在位置的字符如果一直按着x,会将该行所有内容往前推并不断删除光标处的内容直至删除该行所有内容。(向后删)x前带n就是删掉光标处及其后面共计n个字符。shiftx,即X:光标右侧不动左侧删除。(向前删)X前带n就是删掉光标以及光标前共计n个字符。r目标字符:将光标所在处字符替换成目标新字符要是字符跟原来的相同就会将大写的换成小写小写的换成大写。nr目标字符:将光标处以及后面共计n个字符替换成目标字符。shift~:将光标处小写字符换成大写大写换成小写对除字母外字符无视一直按着不放可以光标后移批量切换大小写。shift#选中单词选中后按n可对该单词进行逆向查找。注意:退出后再进入文件进行撤销会出现这个警告:替换模式shiftr进入Esc退出至命令模式。进入后可对光标所在行进行批量的替换覆盖操作。视图模式——常用功能——批量注释ctrlv进入视图模式Esc退回命令模式。用hjkl键选定区域。操作顺序①.选定要批量注释的区域用jk键上下选定要批量注释的几行。还可以用上面关于光标的指令例如shift g,即G选定当前光标到结尾的所有行。gg,选定当前光标到开头的所有行。②.按shifti即I进入插入模式在插入模式输入//(.c/.c的注释是“//”)“#”(makefile的注释是“#”)。③.再按Esc退回命令模式即可实现批量注释。如何取消批量注释先ctrlv进入视图模式再用hjkl去选中//区域最后按d进行删除注释符号。4.vim新文件文件名.c——创建该新文件并打开此时会有这样一个标识。此时进入底行模式用wq保存并退出这个文件就被创建了,可以在目录下看到这个新创建的文件:总结一下:5.使用vim的小技巧①.vim src n打开文件并定位到第n行。②.!v执行最近一条指令。6.vim配置之.vimrc文件配置vim会在当前家目录里去搜寻.vimrc这个配置文件如果有这个文件vim就使用这个文件里的配置项如果没有就使用默认的配置。配置流程:①.在家目录下创建并打开配置文件.vimrc。②.在文件里添加配置项这些文件配置项在网上都有搜一下复制进.vimrc文件就行了。但在.vimrc文件配置只能满足一些简单配置像是自动补齐自动查找还得用插件式的配置。7.vim配置之插件配置(一键化部署方案)下载链接git clone https://gitee.com/cappuccino-ltx/myvim.git ~/.myvim cd ~/.myvim chmod x install ./install①.在sudo前提下复制这段链接进终端②.输入密码如果密码输入错误就输入指令bash install,然后重新输入密码最终安装完,vim长这个样子,具有自动补全提示等vs2022里的功能下面的代码可以忽略不计:注意:1.不能在root用户下使用这个下载链接不然系统会出问题只能在普通用户下跑2.该下载链接仅支持ubuntu!!3.普通用户下载需要用sudo来提升权限注意将该用户添加进白名单。4.一旦安装有问题需要先rm掉myvim这个文件然后重新复制上面链接进行安装。5.需要回退到家目录下进行安装。8.历史遗留问题——sudo添加用户进白名单①.在root用户下用vim打开sudoers文件普通用户打开文件什么都看不到进来以后是这个样子:②.定位到# User privilege specification这一行进行如下修改:最后wq!强制保存并退出。七.Linux编译器——gcc/g1.gcc编译的四个步骤注意:-ESc为选项.iso为临时文件的后缀gcc常用选项程序需要有下面这四个步骤才能运行(形成可执行程序):①.预处理Ⅰ.作用进⾏宏替换/去注释/条件编译/头⽂件展开等。预处理完以后处理好的代码会装在code.i里。经过预处理的code.i就是一个纯净的,经过处理的c语言文件。Ⅱ.进行预处理的指令gcc -E code.c -o code.i-E选项:gcc预处理完成以后停止编译过程。-o选项:指目标文件该选项后跟目标文件。vim test.i:可以看到程序从几步的代码被处理成了几百行的代码:②.编译Ⅰ.作用gcc⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作, 在检查⽆误后,将code.i文件里的代码翻译成汇编语言然后生成的汇编代码装在文件code.s里。Ⅱ.指令gcc -S code.i -o code.s-S:该选项告诉编译器从现在开始进行翻译编译这步做完以后就停止整个编译过程。vim test.s:可看到程序已然被翻译成了汇编语言。③.汇编Ⅰ.作用将汇编语言转化为机器能够识别的二进制code.s里的汇编语言经处理后形成的二进制内容会被装到code.o文件里。code.o文件是一个二进制文件完成汇编以后code.o还无法被执行因为.c文件被转成二进制的只有自己写的代码而像printf等的库函数的实现并没有被转成二进制所以想要文件可执行还得经过下面的第④步——将code.o文件与库文件进行链接最后生成一个可执行程序——code。Ⅱ.指令gcc -c code.s -o code.o-c选项:开始翻译汇编完成就停下来。vim test.o:文件里全是乱码可说明test.s里的汇编语言已经被转成了二进制。④.链接Ⅰ.作用将code.o文件与库文件链接起来进而生成可执行程序——code。Ⅱ.指令gcc code.o -o code./code指令:执行程序./test:看一下执行结果编译从.c到.o一步到位的指令gcc -o 可执行程序名 依赖的源文件依赖请参见笔者Linux基础工具之make/makefile这篇文章。2.何谓条件编译①.定义根据宏选择性编译一部分代码其他代码直接丢弃不参与编译。就像下面这个例子:如果定义了宏M,就会编译免费版这一句代码其余的统统丢弃。②.那么条件编译有何用途呢3.动静态库(重点)①.什么是库库有一套自己的命名规则:lib库的真实名.后缀其中.so后缀是动态库.a后缀是静态库②.动态链接与静态链接动态链接:动态库(libc.so)是个共享库被多个程序共享一旦缺失会导致所有程序无法执行。静态链接:对比:③.关于动态库

相关新闻

OBS硬件编码器不可用怎么办?四步排查,找回消失的NVENC与QSV

OBS硬件编码器不可用怎么办?四步排查,找回消失的NVENC与QSV

OBS硬件编码器不可用怎么办?四步排查,找回消失的NVENC与QSV 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 明…

2026/8/19 1:56:38 阅读更多 →
XPath技巧:用-after精准提取文本

XPath技巧:用-after精准提取文本

这里所讲的这篇文章, 本欲达成去处理掉, 于运用XPath之时, 去提取那特定文本内容之际, 所碰到的问题, 尤其是当径直运用text()这个函数, 却没办法获取到目标文本, 并且那目标文本处于特定分隔符之后的这种情况。借由介绍 -after函数究竟该如何使用, 以此 aides 读者能够精准地提…

2026/8/17 20:49:55 阅读更多 →
Doris集群扩缩容实战:FE、BE、BROKER组件弹性伸缩原理与避坑指南

Doris集群扩缩容实战:FE、BE、BROKER组件弹性伸缩原理与避坑指南

1. 项目概述:理解Doris集群扩缩容的核心价值在数据驱动的业务场景里,我们搭建的Doris集群从来都不是一成不变的。业务量可能激增,也可能在某个活动后回落;数据模型会随着产品迭代而调整;甚至为了成本优化,我…

2026/8/17 20:49:55 阅读更多 →

最新新闻

GridCraft:AI动态网格插件,一键解决Illustrator排版对齐难题

GridCraft:AI动态网格插件,一键解决Illustrator排版对齐难题

如果你是一名设计师,或者经常需要处理排版、网格、对齐工作,那么你一定经历过这样的痛苦时刻:面对一个复杂的版面,需要手动计算间距、对齐元素、保持视觉一致性,结果花在“对齐”上的时间比创意本身还多。更让人头疼的…

2026/8/19 1:56:28 阅读更多 →
CPU芯片测试座厂商测试精度高

CPU芯片测试座厂商测试精度高

在CPU芯片的生产过程中,测试座的测试精度至关重要,它直接影响着芯片的质量和性能。今天,我们就来深入了解一下深圳市鸿怡电子有限公司(简称HMILU),看看它是如何在CPU芯片测试座领域做到高测试精度的。一、技…

2026/8/19 1:56:28 阅读更多 →
KKManager 完整指南:专为 Illusion 游戏打造的模组管理工具,让模组、插件与卡片井井有条

KKManager 完整指南:专为 Illusion 游戏打造的模组管理工具,让模组、插件与卡片井井有条

KKManager 完整指南:专为 Illusion 游戏打造的模组管理工具,让模组、插件与卡片井井有条 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager …

2026/8/19 1:56:28 阅读更多 →
市面上芯片测试治具制造厂家

市面上芯片测试治具制造厂家

做芯片测试这一行,选对测试治具(测试座、老化座、烧录座)有多重要,相信不用我多说。一个接触不良,可能让你一天的良率报告全部作废;一个寿命不行的探针,可能让你在客户面前颜面尽失。市面上的厂…

2026/8/19 1:56:28 阅读更多 →
从面试官视角看Java核心考点与答题思路

从面试官视角看Java核心考点与答题思路

面试官按下话筒,问出那句“HashMap在JDK 1.8里做了什么调整”,他的眼睛其实不在你的嘴上,而在你的手指尖、眉头间和停顿的长度里。一个常年泡在Java战场上的面试官,最怕的不是遇到不会的候选人,而是遇到一个把问答题背…

2026/8/19 1:56:28 阅读更多 →
FreeRTOS Posix仿真环境搭建与内核机制实验指南

FreeRTOS Posix仿真环境搭建与内核机制实验指南

1. 为什么要在Posix环境仿真FreeRTOS?如果你正在学习嵌入式实时操作系统,尤其是FreeRTOS,那么你大概率会遇到一个经典的困境:硬件依赖。无论是STM32、ESP32还是其他微控制器,你都需要一块开发板、一个调试器&#xff0…

2026/8/19 1:55:28 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →