96SEO 2026-02-20 06:53 11
一、Linux编辑器vim1、简介2、三种模式的概念1正常/普通/命令模式(Normal

3、三种模式的切换4、正常/命令模式命令集1插入模式2移动光标3删除文字4复制5替换6撤销与还原7更改8显示与跳转至文件内容指定行
5、vim末行模式命令集1注意2列出行号3跳转至文件内容指定行4查找字符5保存文件6离开vim
二、Linux系统下的C/C编译器gcc/g1、注意2、编译器编译代码的过程3、
三、Linux项目自动化构建工具make/Makefile1、概念2、示例3、依赖关系4、依赖方法5、伪目标6、原理7、项目清理
五、Linux调试器gdb1、说明2、使用格式3、调试命令4、示例
vim有很多种模式但此处只介绍3种分别是命令模式command
进入vim后的默认模式可以控制屏幕光标的移动、将字符、字或行删除移动复制某区段内容以及粘贴切换为Insert
mode下才可以做文字内容的输入。
该模式是vim中用的最频繁的编辑模式。
【i】从光标当前位置开始插入内容。
【a】从光标所在位置的下一个位置开始插入内容。
【o】插入新的一行从行首开始输入文字。
vim可以直接用键盘上的上下左右键来移动光标但正规的vim是用小写英文字母【h】、【j】、【k】、【l】分别使光标左、下、上、右移一格。
【$】移动到光标所在行内容的尾部。
【^】移动到光标所在行内容的头部。
【w】光标移动到下个单词/字的头部。
【e】光标移动到下个单词/字的尾部。
【b】光标移动到上个单词/字的头部。
【#l】光标每次向后移动#个位置。
【gg】光标移动到文件内容的头部。
【G】光标移动到文件内容的尾部即移动到文件内容的最后一行。
【ctrl】【b】屏幕显示内容往后移动一页。
【ctrl】【f】屏幕显示内容往前移动一页。
【ctrl】【u】屏幕显示内容往后移动半页。
【ctrl】【d】屏幕显示内容往前移动半页。
【x】每按一次删除光标所在位置的一个字符。
【#x】删除光标所在位置后面包括光标所在字符的#个字符。
【X】大写的x每按一次删除光标所在位置前面的一个字符。
【#X】删除光标所在位置前面的#个字符不包括光标所在位置的字符。
【dd】删除光标所在行。
【#dd】从光标所在行开始删除#行包括光标所在行。
【yw】将从光标所在位置到单词/字尾的字符复制到缓冲区中。
【#yw】复制#个单词/字到缓冲区中。
【yy】复制光标所在行内容到缓冲区中。
【#yy】复制光标所在行以及后面#
1行的内容总共#行的内容到缓冲区中。
【p】将缓冲区内的字符贴到光标所在位置处。
注意所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能。
【r】替换光标所在处的字符。
【R】替换光标所到之处的字符直到按下【ESC】键为止。
【cw】删除光标所在处的单词/字到单词/字的尾部然后进入插入模式光标仍在输入cw前的位置处。
【c#w】删除光标所在处以及之后的#个单词/字到单词/字的尾部然后进入插入模式光标仍在输入c#w前的位置处。
【ctrl】【g】列出文件内容总共有多少行阅读到当前行占整个文件内容的百分比。
【#G】移动光标至文章的第#行行首。
在使用末行模式之前需先按【ESC】键确定已经处于正常模式再按【】即冒号即可进入末行模式。
【/关键字】先按【/】键再输入想要寻找的字符按【n】将向下查找。
【n】如果第一次查找的关键字不是想要的那个可以一直按【n】往后查找直到找到想要的关键字为止如果文件内容内的关键字已经查找完则会继续从文件内容的第一个或者最后一个关键字处继续查找。
【?关键字】先按【?】键再输入想要查找的字符按【n】将向上查找。
【w】在冒号后输入字母【w】再按回车键就可以将编辑完的文件内容保存起来。
【q】退出vim如果无法离开vim可以在【q】后跟一个【!】即强制离开vim。
【wq】一般建议离开时搭配【w】一起使用这样在退出vim的时候还可以将编辑完的文件内容保存起来。
g的使用方法和gcc的使用方法一样这里只说明gcc。
gcc只能用来编译C语言代码g可以编译C语言代码也可以编译C代码。
预处理删除注释、宏定义替换、头文件展开、条件编译。
编译C/C语言代码转换为汇编代码。
汇编使用汇编代码生成机器可以识别的可重定向二进制目标文件。
链接将多个.o/.obj文件合并形成一个可执行文件.out/.exe文件。
编译器在预处理结束后停止编译过程即只激活预处理不生成文件需要把它重定向到一个输出文件里面。
-S让gcc
编译器在编译结束后停止编译过程即使用语言代码生成汇编代码。
-c让gcc
编译器在进行汇编结束后停止编译过程即使用汇编代码生成二进制的目标代码。
-o将文件内容输出到指定文件中后面跟欲生成的目标文件的文件名。
-static使生成的文件采用静态链接的方式进行链接即链接静态库。
-g生成调试信息即生成DEBUG版本的可执行程序GNU
调试器可利用该信息。
-shared使生成的文件尽量使用动态库因此生成文件会比较小但是需要系统有动态库。
主要包括宏定义替换头文件包含条件编译语句处理删除注释等等。
预处理指令是以#号开头的代码行。
编译器首先要检查代码的规范性、是否有语法错误等等以确定代码实际要做的工作。
在检查无误后gcc
把编译阶段生成的“.s”文件转换成目标文件即生成的文件内容为二进制代码。
链接的功能其实就是一个“打包”的过程它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。
一般链接的过程有两种方式一种是动态链接需要有动态库另一种是静态链接需要有静态库。
gcc、g默认形成的可执行程序采用的是动态链接的方式进行链接的。
进行链接操作的机器可能因为没有静态库而导致链接失败。
动态链接必须使用.so动态库文件、静态链接必须使用.a静态库文件。
C语言静态库安装命令sudo
在我们编写的C语言代码中并没有定义printf函数的实现且在包含的头文件stdio.h中也只有该函数的声明而没有定义函数的实现。
系统把这些函数实现都写到名为
库文件这样才能使用printf函数这就是链接的作用。
函数库一般分为静态库和动态库两种。
在编译链接时把库文件的代码全部加入到可执行文件中虽然生成的文件比较大但在运行时不再需要库文件了。
静态库文件的后缀名一般为“.a”。
与静态库相反在编译链接时并没有把库文件的代码加入到可执行文件中而是在程序执行时由运行时链接文件加载库文件即将库中我要的方法实现的地址填入我的可执行程序中建立关联这样可以节省系统的开销。
动态库文件的后缀名一般为“.so”。
在一个工程中会有许多源文件其按类型、功能、模块分别放在若干个目录中我们可以在Makefile中定义一系列的规则来指定哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至进行更复杂的功能操作等等。
make/Makefile的功能就是自动化编译一旦写好Makefile文件只需要一个make命令整个工程将会完全自动编译极大地提高了软件开发的效率。
make是一个解释Makefile中指令的命令工具。
即make是一条命令Makefile是一个文件它们两个搭配起来使用才能够完成项目的自动化构建。
如果文件A的改变会影响到文件B那么就称文件B依赖于文件A例如上方代码中test:test.c和clean:都是依赖关系。
如果文件B依赖于文件A那么通过文件A得到文件B的方法就是文件B依赖于文件A的依赖方法。
例如上方代码中gcc
总是被执行的即总是会根据依赖关系执行依赖方法而不会因为执行后的文件无任何变动而不执行。
上方.PHONY后面跟着的就是伪目标一般习惯把clean设置为.PHONY。
当执行make命令时make会在当前目录下查找文件名为Makefile或makefile的文件。
如果找到了它会在该文件内容中查找第一个目标文件target在上面的示例中他会找到test这个目标文件并把这个文件作为最终的目标文件。
如果test文件不存在或者test所依赖的test.c文件的文件修改时间比test这个文件新那么它就会执行后面所定义的命令来生成test目标文件。
如果test目标文件已存在且所依赖的test.c文件的文件修改时间比test这个目标文件老则make会报出目标文件是最新版本的错误而不会执行后面所定义的命令来生成test目标文件。
如果test所依赖的test.c文件不存在那么make会在当前文件中查找目标为test.c文件的依赖关系如果找到则再根据那一个规则生成test.c文件。
make会一层一层地查找文件的依赖关系直到最终编译出第一个目标文件。
在查找的过程中如果出现错误比如最后被依赖的文件找不到那么make就会直接退出并报错而对于所定义的命令出现错误或者编译不成功make不会去管它。
即make只管文件的依赖性如果查找到依赖关系之后冒号后面的文件还是不在那么make将不会继续工作了。
在每次重新生成可执行程序前或者不需要可执行程序时应该将上一次生成可执行程序时生成的一系列文件进行清理删除但是如果我们每次都要自己手动去执行那些指令进行清理工作的话就会变得比较麻烦因为每次清理时执行的都是相同的清理删除指令。
所以我们可以将项目清理的指令也加入到Makefile文件中。
像clean这种没有被第一个目标文件直接或间接关联时它后面所定义的命令将不会被自动执行。
不过我们可以显式的让make执行它。
即执行命令make
要在Linux下安装软件通用的办法是下载程序的源代码并进行编译进而得到可执行程序。
但是这样操作太麻烦了。
于是就有人把一些常用的软件提前编译好做成软件包并放在一个服务器上而用户可以通过包管理器很方便地获取到这个编译好的软件包然后直接进行安装。
罗列出当前一共有哪些软件包但由于包的数目可能有很多我们可以使用
执行完命令后yum会自动查找都有哪些软件包需要下载这时候按y确认安装即可上方命令没有加-y默认安装时。
当出现complete字样时说明安装已经完成。
用户才能进行安装。
yum安装软件时只能将正在安装的软件安装完成了才能安装另一个。
即如果yum正在安装一个软件时这时再尝试用yum安装另外一个软件yum会报有其他软件正在安装的错误并显示那个软件的安装信息直到那个软件安装完成后才进行安装。
当然yum正在安装的软件的安装不会中止。
可执行程序的发布方式有两种debug模式和release模式。
Linux下的
gcc/g编译器编译出来的二进制可执行程序默认是release模式发布的。
要使用gdb进行调试必须在源代码生成可执行二进制程序的时候加上
选项使生成的可执行二进制程序是debug模式发布的。
gdb会记录最近一条命令如果使用的命令无变化时可以直接按回车键。
行号显示生成binFiledebug模式的可执行二进制文件的文件的源代码接着上次的位置往下列每次列10行还需继续往下列可以按回车键或者继续输入那个命令直到代码全部列完为止。
listl
step逐语句调试即如果下条调试语句为函数调用将进入那个函数体内。
break
b查看断点信息。
finish执行完当前函数后停下来等待命令。
p
c从当前位置开始连续而非单步执行程序即跳转到下一个断点处或者运行结束。
d
变量名跟踪查看一个变量每次调试停下来时都显示它的值。
undisplay取消对先前设置的全部变量的跟踪。
until
不加-g即生成的是release发布的可执行二进制文件时用gdb调试时报的错误
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback