yum安装

yum是先下载再安装

yum install 文件名

yum -y install 文件名

yum卸载

yum remove 文件名

-y:对于一些询问表示yes

yum -y remove 文件名

yum的周边 - yum的整个生态问题

1、yum如何得知目标服务器的地址和下载链接? 配置文件里面会记录下载的地址

ls /etc/yum.repos.d/

这里面对应的都是yum的本地仓库名 其中CentOS-Base.repo就是yum源,可以更改yum源 扩展软件源

yum install -y epel-release

2、云服务器谁提供的? 既得利益者提供的 3、谁提供软件? 大家愿意写的人开发的

vim

写代码:vim 编代码:gcc/g++ 调代码:gdb 维护项目结构、自动化编译:make/makefile

快速介绍vim

vim是一款多模式的编辑器,vim里面还有很多的子命令,来进行代码的编写操作 1、进入vim后一般没法写入,需要模式切换,i – insert插入模式

2、写完后按esc退出插入模式 -> shift+;(也就是:)进入低行模式 -> wq(保存并退出)-> 回车 3、gcc编译,运行

vim的模式

命令模式

插入模式 -> 命令模式:esc

插入模式

命令模式 -> 插入模式 :i/a/o

低行模式

命令模式 -> 低行模式:shift + ;(也就是:) 低行模式 -> 命令模式:esc

常见模式 – 命令、低行

命令模式 – 光标的移动

将光标定位到最右侧结尾处:shift+4($) 将光标定位到最左侧开头处:shift+6(^) 将光标定位到文本的最后一行:shift+g(G) 将光标定位到文本的最开始一行:gg 将光标定位到特定一行,例如第五行:5 shift g h:左 j:下 k:上 l:右 w:以单词为单位向后移动 b:以单词为单位向前移动

命令模式 – 复制粘贴、剪贴、删除

n+yy:复制所在行/多行 n+p:在下一行进行粘贴一次/n次 u:撤销编辑操作,undo ctrl+r:对刚刚的撤销进行撤销 n+dd:删除/剪切当前行/多行 dd、p:剪切

命令模式 – 小写/大写

shift+`(~):大小写快速切换

替换模式

n+r:替换当前光标所在字符/n个字符 shift+r:替换模式

命令模式 – 删除

n+x:删除光标所在字符/后面n个字符(往后删) n+shift+x:往前删

命令模式 – 查找

shift+3(#):高亮要查找的函数名 n:下一个查找到的函数名/字符串

低行模式

wq:报存并退出 w!:强制写 q!:强制退出 wq!:强制保存并退出 !指令:可以在低行模式执行shell指令 /搜索的内容: ?搜索的内容 vs 文件名:会形成一个并在旁边对比 set nu:调出行号 set nonu:取消行号 vim test.c 行号:光标直接定位到指定行 shift+zz:保存并退出vim(不建议用) 光标在哪个窗口就是在编辑哪个窗口

多窗口的光标移动

ctrl+ww

批量化注释/去注释

批量化注释 1、ctrl+v:进入VISUAL BLOCK模式 2、按hjkl进行区域选择 3、shift+i:从VISUAL BLOCK模式切换成插入模式 4、// 5、按esc 批量化去注释 1、ctrl+v:进入VISUAL BLOCK模式 2、hjkl选择区域 3、按d

配置问题

1、进入用户家目录下 2、创建.vimrc 3、vim .vimrc进行配置

set nu //显示行号

set cursorline //突出显示当前行

hi Cursorline cterm=bold ctermbg=black ctermfg=green guibg=green //粗体显示选中行,用黑色框,字体标绿

set cursorcolum //设置列高亮

set autoindent //自动缩进

set softtabstop=4 //统一缩进为4

set tabstop=4 //tab缩进为4

set cindent

set shiftwidth=4

set smartindent //提供自动缩进

syntax on //语法高亮

inoremap ' ''i //自动补齐

inoremap " ""i

inoremap < <>i

inoremap ( ()i

inoremap [ []i

inoremap { {}O

简便配置方法: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 一定在普通账号下运行

解决sudo的白名单

得有root账户改

vim /etc/sudoers

gcc/g++

程序的翻译过程及gcc选项

编译C语言是默认是a.out,如果想要指定名称的话,下列两种方法。 默认形成 指定名称 凡是和 -o 紧邻的是形成的可执行程序

1 #include

2 #define M 100

3

4 int main()

5 {

6 printf("hello linux\n");

7 printf("hello linux: %d\n", M);

8 //printf("hello linux\n");

9 //printf("hello linux\n");

10 //printf("hello linux\n");

11 //printf("hello linux\n");

12 //printf("hello linux\n");

13

14 return 0;

15 }

预处理

头文件展开:本质在预处理的时候,将头文件内容拷贝至源文件 去注释 宏替换 条件编译

gcc -E test.c -o test.i

-E : 从现在开始进行程序的翻译过程,预处理做完的时候就停下来 上面多出的八百多行代码都是头文件展开

条件编译

条件编译的本质:对代码进行裁剪

1 #include

2 #define VERSION1 1

3 // #define VERSION2 2

4

5 int main()

6 {

7 printf("hello linux\n");

8 #ifdef VERSION1

9 printf("hello version1.0\n");

10 #elif VERSION2

11 printf("hello version2.0\n");

12 #else

13 printf("hello free version\n");

14 #endif

15 //printf("hello linux\n");

16 //printf("hello linux\n");

17 //printf("hello linux\n");

18 //printf("hello linux\n");

19 //printf("hello linux\n");

20

21 return 0;

22 }

将test.c里面的两个宏都注释掉,可以在gcc指令里面添加宏 -D

gcc test.c -o test.exe -D VERSION1=1

gcc test.c -o test.exe -DVERSION1=1

//可以连着也可也不连着

应用场景 1、对于软件的专业版与社区版,维护一份代码,可以用条件编译对里面的功能进行裁剪 2、头文件定义上,防止头文件被重复包含

#ifndef \_\_CODE\_H\_\_

#define \_\_CODE\_H\_\_

// XXXX

#endif

编译

C -> 汇编 从test.c开始也许, -S 从现在开始进行语言的翻译,当编译工作完成就停止

gcc -S test.i -o test.s

形成汇编语言

汇编

汇编 -> 二进制,可重定位目标二进制文件(不能执行) test.o : 可重定位目标二进制文件

gcc -c test.s -o test.o

vim是文本编辑器,所有对于二进制展现出来是乱码

链接

将可执行程序与库关联起来

gcc -o test test.o

ldd 命令可以查询一个可执行文件所依赖的库 其中/lib64/libc.so.6就是所用的C语言的库

g++

1、编译失败问题 输入下列指令

sudo yum -y install gcc+ gcc-c++

2、编译形成指定名称的可执行程序 C语言也可以用g++编译,g++的选项与gcc一样

g++ test.c -o mybincpp

g++ -o mybincpp test.c

动静态库的理解 – 链接

我们所写的代码都是代码+调用的库 库让我们写一份代码不用从零开始 都是文件

下面这个是个动态库 去掉lib(所有库都以这个开头),去掉.so.6,所有这个库是个c库 动态库 -> 动态链接 静态库 -> 静态链接

动态库 优点:节省资源,不会出现太多的重复代码 — 资源(磁盘、内存、网络(如果你在一个网站上传一份重复很多的代码,那别人下载也是在浪费资源)等) 缺点:对库的依赖性比较强,一旦库丢失,所以使用这个库的程序都无法运行 静态库 优点:不依赖库,同类型平台中都可以直接运行使用 缺点:可执行程序体积比较大,比较浪费资源 — 资源(磁盘、内存、网络(如果你在一个网站上传一份重复很多的代码,那别人下载也是在浪费资源)等)

动态链接、动态库

被多个使用者共享使用,一旦缺失,所有程序都不可以运行了!! 我们调用哪个库,只是在代码中指明库的地址

静态链接、静态库

代码中我们用到哪个库,直接硬拷过来,成为静态链接

ldd

ldd可以查看一个文件库的依赖情况

file

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! direct/39b125d65b04441d83828415e7aa2095.png)

file

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

[外链图片转存中…(img-kHtyPhzQ-1714170600115)]

给大家整理的电子书资料:

[外链图片转存中…(img-D71UgKYv-1714170600116)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: