网站推广与维护有什么不同,贵州网站建设公司推荐,淘客网站推广怎么做,网站效果主要包括目录
1、Linux软件包管理器---yum
2、Linux开发工具
2.1、vim基本概念
2.2 vim基本操作
2.3 vim正常模式命令集
2.4 vim末行模式命令集
2.5 简单vim配置
2.5.1 配置文件的位置
3 Linux编译器--gcc/g的使用
3.1 背景知识
3.2 gcc完成
4 Linux调试器--gdb使用
4.1 背…目录
1、Linux软件包管理器---yum
2、Linux开发工具
2.1、vim基本概念
2.2 vim基本操作
2.3 vim正常模式命令集
2.4 vim末行模式命令集
2.5 简单vim配置
2.5.1 配置文件的位置
3 Linux编译器--gcc/g的使用
3.1 背景知识
3.2 gcc完成
4 Linux调试器--gdb使用
4.1 背景
4.2 gdb的使用
5 、Linux项目自动化构建工具--make/Mikefile
6、Linux系统下第一个小程序--进度条 1、Linux软件包管理器---yum 软件包 在Linux系统中安装软件通常是下载程序源代码然后进行编译得到可执行程序。但是这样比较麻烦这时就有人将一些常见的软件编译好做成软件包放在服务器中通过包管理就可以很方便的获取到这个编译好的软件包从而可以直接进行安装。软件包和软件包管理器相当于“App”和软件应用商店之间的1关系yum就是Linux系统下的一种常见的软件包管理器主要应用于Fedora, RedHat、Centos等发行版上. 查看软件包 我们可以使用yum list 来列出当前一共有哪些软件包由于软件包数量很多因此在这里我使用grep命令来筛选出其中一个。 从上述结果出我们可以看出其中包含软件包名称主版本号次版本号源程序发行号软件包发行号主机平台cpu架构。 “x86_x64”表示是64位系统的安装包‘i686’表示32位系统的安装包选着包时应该要与系统匹配 el7 表示操作系统发行版的版本. el7 表示的是 centos7/redhat7. el6 表示 centos6/redhat6. 最后一列, os 表示的是 软件源 的名称, 类似于 小米应用商店, 华为应用商店 这样的概念. 安装软件 我们可以使用 sudo yum install 软件包名称 来安装程序当出现complete字样则说明安装成功安装软件时由于要向系统目录中写入内容一般需要使用sudo切换到root账户下才能完成该命令只能一个一个安装如果多个同时安装则会报错。 卸载软件 我们今天使用 sudo yum remove 软件包名称 来卸载软件。 注意在只用所有yum命令必须保证主机虚拟机网络通畅。 2、Linux开发工具 2.1、vim基本概念 vim具有很多种命令模式但是常用的有三种命令模式command mode、插入模式insert mode、底行模式last line mode。 正常、普通、命令模式Normal mode 控制屏幕光标的移动字符字或行的删除移动复制某区段进入insert mode 或者到last line mode插入模式Insert mode 只有在insert mode下才能对文件进行文字输入可以按【Esc】回到命令行模式。末行模式last line mode 文件的保存或退出也可以对文件进行替换找字符串列出行号等操作。 2.2 vim基本操作 进入vim,在系统提示符号输入vim及文件名称后就进入vim全屏幕编辑画面: $ vim test.c 不过有一点要特别注意就是你进入vim之后是处于[正常模式]你要切换到[插入模式]才能够输入文字。 [正常模式]切换至[插入模式] 输入a 输入i 输入o [插入模式]切换至[正常模式] 目前处于[插入模式]就只能一直输入文字如果发现输错了字,想用光标键往回移动将该字删除可 以先按一下「ESC」键转到[正常模式]再删除文字。当然也可以直接删除。 [正常模式]切换至[末行模式] 「 shift ;」, 其实就是输入「:」 退出vim及保存文件,在[正常模式]下按一下「:」冒号键进入「Last line mode」,例如: : w 保存当前文件 : wq (输入「wq」,存盘并退出vim) : q! (输入q!,不存盘强制退出vim 2.3 vim正常模式命令集 插入模式 按「i」切换进入插入模式「insert mode」 按“i”进入插入模式后是从光标当前位置开始输入文件 按「a」进入插入模式后是从目前光标所在位置的下一个位置开始输入文字 按「o」进入插入模式后是插入新的一行从行首开始输入文字。 从插入模式切换为命令模式 按「ESC」键。 移动光标 vim可以直接用键盘上的光标来上下左右移动但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」分别控制光标左、下、上、右移一格 按「G」移动到文章的最后 按「 $ 」移动到光标所在行的“行尾” 按「^」移动到光标所在行的“行首” 按「w」光标跳到下个字的开头 按「e」光标跳到下个字的字尾 按「b」光标回到上个字的开头 按「#l」光标移到该行的第#个位置如5l,56l 按gg进入到文本开始 按shiftg进入文本末端 按「ctrl」「b」屏幕往“后”移动一页 按「ctrl」「f」屏幕往“前”移动一页 按「ctrl」「u」屏幕往“后”移动半页 按「ctrl」「d」屏幕往“前”移动半页 删除文字 「x」每按一次删除光标所在位置的一个字符 「#x」例如「6x」表示删除光标所在位置的“后面包含自己在内”6个字符 「X」大写的X每按一次删除光标所在位置的“前面”一个字符 「#X」例如「20X」表示删除光标所在位置的“前面”20个字符 「dd」删除光标所在行 「#dd」从光标所在行开始删除#行 复制 「yw」将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」复制#个字到缓冲区 「yy」复制光标所在行到缓冲区。 「#yy」例如「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」将缓冲区内的字符贴到光标所在位置。注意所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。 替换 「r」替换光标所在处的字符。 「R」替换光标所到之处的字符直到按下「ESC」键为止。 撤销上一次操作 「u」如果您误执行一个命令可以马上按下「u」回到上一个操作。按多次“u”可以执行多次回 复。 「ctrl r」: 撤销的恢复 更改 「cw」更改光标所在处的字到字尾处 「c#w」例如「c3w」表示更改3个字 跳至指定的行 「ctrl」「g」列出光标所在行的行号。 「#G」例如「15G」表示移动光标至文章的第15行行首。 2.4 vim末行模式命令集 在使用末行模式之前请记住先按「ESC」键确定您已经处于正常模式再按「」冒号即可进入末行模式。 列出行号 「set nu」: 输入「set nu」后会在文件中的每一行前面列出行号。 跳到文件中的某一行 「#」:「#」号表示一个数字在冒号后输入一个数字再按回车键就会跳到该行了如输入数字15 再回车就会跳到文章的第15行。 查找字符 「/关键字」: 先按「/」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直按 「n」会往后寻找到您要的关键字为止。 「?关键字」先按「?」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直 按「n」会往前寻找到您要的关键字为止。 保存文件 「w」: 在冒号输入字母「w」就可以将文件保存起来 离开vim 「q」按「q」就是退出如果无法离开vim可以在「q」后跟一个「!」强制离开vim。 「wq」一般建议离开时搭配「w」一起使用这样在退出的时候还可以保存文件。 2.5 简单vim配置 2.5.1 配置文件的位置 在目录 /etc/ 下面有个名为vimrc的文件这是系统中公共的vim配置文件对所有用户都有效。 而在每个用户的主目录下都可以自己建立私有的配置文件命名为“.vimrc”。例如/root目录下 通常已经存在一个.vimrc文件,如果不存在则创建之。 切换用户成为自己执行 su 进入自己的主工作目录,执行 cd ~ 打开自己目录下的.vimrc文件执行 vim .vimrc Vim 从入门到精通 3 Linux编译器--gcc/g的使用 3.1 背景知识 1. 预处理进行宏替换) 2. 编译生成汇编) 3. 汇编生成机器可识别代码 4. 连接生成可执行文件或库文件) 3.2 gcc完成 格式 gcc [选项] 要编译的文件 [选项] [目标文件] 预处理(进行宏替换) 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。实例: gcc –E hello.c –o hello.i选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。 编译生成汇编 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。实例: gcc –S hello.i –o hello.s 汇编生成机器可识别代码 汇编阶段是把编译阶段生成的“.s”文件转成目标文件读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了实例: gcc –c hello.s –o hello.o 连接生成可执行文件或库文件 在成功编译之后,就进入了链接阶段。实例: gcc hello.o –o hello 在这里涉及到一个重要的概念:函数库 我们的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而 没有定义函数的实现,那么,是在哪里实“printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到 系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函 数“printf”了,而这也就是链接的作用 函数库分为动态库和静态库两种 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。其后缀名一般为“.a”动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态 库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc hello.o –o hellogcc默认生成的二进制程序是动态链接的这点可以通过 file 命令验证。 gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o 文件输出到 文件-static 此选项对生成的文件采用静态链接-g 生成调试信息。GNU 调试器可利用该信息。-shared 此选项将尽量使用动态库所以生成文件比较小但是需要系统由动态库.-O0-O1-O2-O3 编译器的优化选项的4个级别-O0表示没有优化,-O1为缺省值-O3优化级别最高-w 不生成任何警告信息。-Wall 生成所有警告信息。 4 Linux调试器--gdb使用 4.1 背景 程序的发布方式有两种debug模式和release模式 Linux gcc/g出来的二进制程序默认是release模式 要使用gdb调试必须在源代码生成二进制程序的时候, 加上 -g 选项 4.2 gdb的使用 listl 行号显示binFile源代码接着上次的位置往下列每次列10行。listl 函数名列出某个函数的源代码。r或run运行程序。n 或 next单条执行。s或step进入函数调用break(b) 行号在某一行设置断点 break 函数名在某个函数开头设置断点info break 查看断点信息。finish执行到当前函数返回然后挺下来等待命令print(p)打印表达式的值通过表达式可以修改变量的值或者调用函数p 变量打印变量值。set var修改变量的值continue(或c)从当前位置开始连续而非单步执行程序run(或r)从开始连续而非单步执行程序delete breakpoints删除所有断点delete breakpoints n删除序号为n的断点disable breakpoints禁用断点enable breakpoints启用断点info(或i) breakpoints参看当前设置了哪些断点display 变量名跟踪查看一个变量每次停下来都显示它的值undisplay取消对先前设置的那些变量的跟踪until X行号跳至X行breaktrace(或bt)查看各级函数调用及参数infoi) locals查看当前栈帧局部变量的值quit退出gdb 5 、Linux项目自动化构建工具--make/Mikefile 原理 make是如何工作的,在默认的方式下也就是我们只输入make命令。那么 1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2. 如果找到它会找文件中的第一个目标文件target在上面的例子中他会找到“hello”这个文件 并把这个文件作为最终的目标文件。 3. 如果hello文件不存在或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新可 以用 touch 测试那么他就会执行后面所定义的命令来生成hello这个文件。 4. 如果hello所依赖的hello.o文件不存在那么make会在当前文件中找目标为hello.o文件的依赖性如果 找到则再根据那一个规则生成hello.o文件。这有点像一个堆栈的过程 5. 当然你的C文件和H文件是存在的啦于是make会生成 hello.o 文件然后再用 hello.o 文件声明 make的终极任务也就是执行文件hello了。 6. 这就是整个make的依赖性make会一层又一层地去找文件的依赖关系直到最终编译出第一个目标文 件。 7. 在找寻的过程中如果出现错误比如最后被依赖的文件找不到那么make就会直接退出并报错 而对于所定义的命令的错误或是编译不成功make根本不理。 8. make只管文件的依赖性即如果在我找了依赖关系之后冒号后面的文件还是不在那么对不起 我就不工作啦。 项目清理 工程是需要被清理的 像clean这种没有被第一个目标文件直接或间接关联那么它后面所定义的命令将不会被自动执行 不过我们可以显示要make执行。即命令——“make clean”以此来清除所有的目标文件以便重编 译。 但是一般我们这种clean的目标文件我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是总是被 执行的。 6、Linux系统下第一个小程序--进度条
//进度条#includestdio.h#includeunistd.h#includestring.h#define RED \x1b[31m#define RESET \x1b[0m#define M 101int main(){char MAX[M];char *x-/\\|; memset(MAX ,0,sizeof(MAX));int cont0;while(cont100){MAX[cont]#;printf(RED[%-100s]RESET[%d%%][%c]\r,MAX,cont,x[cont%4]);fflush(stdout);usleep(100000);}printf(\n);return 0;