Linux——环境开发基础(vim、gcc、yum、git、gdb)

目录

1.Linux编辑器——vim使用 

2.Linux编译器——gcc/g++

3.Linux项目自动化构建工具——make/Makefile

4.Linux软件包管理器——yum

5.Linux调试器——gdb


前言:因为篇幅原因,本文着重列出命令,小伙伴下去自己尝试,只有多使用才能真的记住! 

1.Linux编辑器——vim使用 

vim是一款多模式的编辑器

——命令模式(默认打开的模式

——编辑/插入模式(输入i)(输入ESC回退到命令模式)

——底行模式(输入shift + :)(输入ESC回退到命令模式)

——替换模式(shift+r)

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第1张图片


常见命令:(括号里的相当于解释,在输入命令时不需要)

yy:将当前光标所在的行,复制          nyy(n代表具体数字,复制n行)

p:将复制行进行粘贴                         np(复制n倍)

dd:将当前光标所在的行进行剪切(删除)  ndd(删除n行)+p(删除粘贴->剪切)

u:撤销操作

ctrl+r:撤销u操作

shift+g:光标定位到文件的结尾            

n+shift+g:光标定位到文件的任意行

gg:光标定位到文件的最开始

shift+6(^):将光标定位达到当前行的最开始

shift+4($):将光标定位到当前行的最结尾

w,b:以单词位单位进行光标的前后移动(w后,b前)

h,j,k,l:左,下,上,右

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第2张图片

shift+~:大小写切换

shift+r:进入替换模式

r:替换光标所在的字符                      nr(替换n个字符)

x:删除光标所在的字符(从左到右)  nx(删除n个字符)

shift+x(X):删除光标所在的字符(从右到左)


底行模式:(光标在哪个屏就是哪个文件的底行)

set nu:显示行号

set nonu:取消行号

vs 文件名:分屏操作

w:写入    w!强制写入

q:退出    q!强制退出

ctrl+w+w:多分屏切换光标

!cmd(cmd是执行命令):不退出vim执行对应的命令(执行命令行,编译,允许,查看man)等

2.Linux编译器——gcc/g++

g++没有输入命令:

sudo yum install -y gcc-c++

gcc没有输入命令:

sudo yum install -y gcc

gcc是一个专门用来编译链接c语言的编译器

程序翻译的过程:

    文本的C->计算机二进制

1.预处理(a.去注释    b.宏替换    c.头文件展开    d.条件编译 ...)

——预处理了还是C语言吗?

答:还是C语言

2.编译(C->汇编)

3.汇编(汇编->可重定向二进制目标文件)

4.链接(链接->多个.o,.obj->合并形成一个可执行).exe

查看版本:

gcc -v
g++ -v

gcc 源文件 -o 可执行文件        #形成可执行文件

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第3张图片

或者可以这样写:gcc -o 可执行文件 源文件

预处理:

#-E:从现在开始进行程序的翻译,如果预处理完成就停下来!

gcc -E 源文件 -o 临时文件.i(预处理文件)

编译:

#-S:从现在开始进行程序的翻译,如果编译完成就停下来!

gcc-S 临时文件.i -o 临时文件.s

汇编:

#-c:从现在开始进行程序的翻译,如果汇编完成就停下来!

gcc -c 临时文件.s -o 可重定向可执行文件.o(二进制)

链接:

gcc . o文件 -o 可执行程序


动静态库:

ldd 可执行程序——查看库

file 可执行程序——查看使用什么链接方式

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第4张图片

一般链接的过程,是有两种方式的:

a.动态链接——需要动态库(.so)    windows下:.dll

b.静态链接——需要静态库(.a)      windows下:.lib

动态链接:将库中我要的方法的地址,填入我的可执行程序中,建立关联!(节省资源)

静态链接:将库中方法的实现,真的拷贝到我们的可执行程序中!(占用资源)


gcc、g++默认形成的可执行程序是动态链接的! 

如何静态链接?加—static!

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第5张图片

-static:表明使用静态链接的方式形成可执行程序!

 

你的机器可能因为没有静态库,而导致链接失败!

动态链接必须使用.so动态库文件

静态链接必须使用.a静态库文件

sudo yum install -y glibc-static             #C静态库
sudo yum install -y libstdc++-static     #C++静态库

3.Linux项目自动化构建工具——make/Makefile

make是一个命令

Makefile是一个文件

存在价值:自动化的构建项目

编写Makefile:a.依赖关系    b.依赖方法

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第6张图片

make自顶向下扫描,只会自动形成第一个遇到的目标

要想生成下面的:make 目标

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第7张图片

.PHONY总是被执行的!

——总是会根据依赖关系执行依赖方法!

——习惯:给clean设置.PHONYLinux——环境开发基础(vim、gcc、yum、git、gdb)_第8张图片

Makefile如何知道我们的可执行程序是最新的??

——根据文件的修改时间(比较可执行程序和源文件的时间,源文件时间比可执行程序晚就会执行make

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第9张图片

Access:访问时间

Modify:内容修改时间

Change:属性修改时间

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第10张图片

Linux——环境开发基础(vim、gcc、yum、git、gdb)_第11张图片

多文件Makefile:

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第12张图片

执行结果:

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第13张图片


4.Linux软件包管理器——yum

1.你要下载安装的软件是在你的电脑上面吗?

    不是,是在软件开发平台

2.如果不在,你怎么知道在哪里的?

    我不知道,yum知道

3.谁放的?

    Linux社区或者对应的开发人员

yum作用:a.搜索,下载,安装    b.解决依赖关系

一般原生的Linux系统,内置的下载链接基本都是自己配套的国外的网址

yum的操作

yum源:一个配置文件 

查看yum源:ls /etc/yum.repos.d

yum三板斧:

1.#yum list | grep xxxx            查找yum列表

2.#sudo yum install -y 安装软件

3.#sudo yum remove 你的软件         #移除


git——版本控制器

    雷纳斯托瓦丝,自己着手写一个版本控制器!——git

git三板斧:

#git clone 你的git仓库链接

1.#git add 你的文件  #添加我们的代码到本地仓库,git add .把所有文件到本地仓库

2.#git commit -m “这里必须写提交日志"

3.#git push                                                    #提交我们的代码到远端仓库

git log                            #查看提交记录

冲突解决:

git pull                            #同步 

阻止一些后缀文件上传:在.gitignore文件中

git rm   #可以删除


5.Linux调试器——gdb

 

gcc,g++默认形成的可执行程序搜索release的!故无法直接被调试!(默认动态链接形成)

要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项

 Linux——环境开发基础(vim、gcc、yum、git、gdb)_第14张图片

gdb会记录最近一条命令,如果命令没变化,可以直接回车!

gdb命令:

quit:退出

r:开始调试,如果没有设置断点,就直接运行结束!
l:查看代码
b+行号:给特定的行号打断点
info b:查看断点(包含断点的编号)
d 断点编号:删除断点
n:逐过程,等同VS的F10
p 变量名:打印变量内容
s:逐语句,等同VS的F11 
bt:查看当前的调用堆栈
finish:将当前函数跑完,就停下来
display:设置长显示
undisplay 编号: 取消长显示
until:跳转到指定行
c:运行至下一个断点处会停下来!
disable/enable 断点的编号:使能(关闭和打开)断点

你可能感兴趣的:(我在地球学Linux,linux,vim,git,gdb,Makefile,yum)