当前位置: 首页 > news >正文

江苏宜安建设有限公司网站西数网站管理助手

江苏宜安建设有限公司网站,西数网站管理助手,安徽网站优化价格咨询,关联表单 WordPressLiunx开发工具 1.Linux编辑器-vim使用1.1vim的基本概念1.2vim的基本操作1.3命令模式命令集1.3.1光标定位1.3.2光标移动1.3.3文本复制1.3.4文本操作 1.4插入模式命令集1.5底行模式命令集 2.vim配置3.sudo配置4.Linux编辑器-gcc/g使用4.1背景知识4.2gcc如何操作 5.函数库5.1函数库… Liunx开发工具 1.Linux编辑器-vim使用1.1vim的基本概念1.2vim的基本操作1.3命令模式命令集1.3.1光标定位1.3.2光标移动1.3.3文本复制1.3.4文本操作 1.4插入模式命令集1.5底行模式命令集 2.vim配置3.sudo配置4.Linux编辑器-gcc/g使用4.1背景知识4.2gcc如何操作 5.函数库5.1函数库的分类 6.Liunx调试器-gdb使用6.1背景知识6.2gdb命令集 7.Linux项目自动化构建工具-make/Makefile7.1背景7.2makefile原理7.3初步理解makefile的语法7.4两个问题7.5makefile推导规则 我们编写C/C程序使用vs编译运行调试都是一体的而在Liunx都分开的。 1.Linux编辑器-vim使用 vi/vim 是 Linux 系统内置的不可或缺的文本编辑命令vi/vim的区别简单点来说它们都是多模式编辑器不同的是vim是vi的升级版本它不仅兼容vi的所有指令而且还有一些新的特性在里面。例如语法加亮可视化操作不仅可以在终端运行也可以运行于x window、 mac os、windows。我们主要学vim。 1.1vim的基本概念 这里主要讲解vim的三种模式(其实有好多模式目前掌握这3种即可),分别是命令模式command mode、插入模式Insert mode和底行模式last line mode各模式的功能区分如下 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动字符、字或行的删除移动复制某区段及进入Insert mode下或者到 last line mode 插入模式(Insert mode) 只有在Insert mode下才可以做文字输入按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 末行模式(last line mode) 文件保存或退出也可以进行文件替换找字符串列出行号等操作。 在命令模式下shift 即可进入该模式。要查看你的所有模式打开vim底行模式直接输入: help vim-modes1.2vim的基本操作 进入vim,在系统提示符号输入vim及文件名称后就进入vim全屏幕编辑画面: 不过有一点要特别注意就是你进入vim之后是处于[正常模式]你要切换到[插入模式]才能够输入文字 [正常模式]切换至[插入模式] 输入a 输入i 输入o [插入模式]切换至[正常模式] 目前处于[插入模式]就只能一直输入文字如果发现输错了字,想用光标键往回移动将该字删除可以先按一下「ESC」键转到[正常模式]再删除文字。当然也可以直接删除。 [正常模式]切换至[末行模式] 「shift ;」, 其实就是输入「:」 退出vim及保存文件,在[正常模式]下按一下「:」冒号键进入「Last line mode」,例如: : w 保存当前文件 : wq (输入「wq」,存盘并退出vim) : q! (输入q!,不存盘强制退出vim) 1.3命令模式命令集 1.3.1光标定位 光标移到改行最右边 shift 4 ----- $ 光标移到改行最左边 shift 6 ----- ^ 光标到结尾 shift g ----- G 光标到开头 gg 跳转光标到指定行n代表的是行号 nshiftg 1.3.2光标移动 左 h 下 j 上 k 右 l 向后按照单词移动 w 支持 nw 向前按照单词移动 b 支持 nb 1.3.3文本复制 执行的是光标所在行位置 复制 yy 默认复制一行 nyy 支持光标所在行进行多行复制 n是行数 粘贴 p 光标在哪里就向哪里粘贴。默认一次 np 支持对内容进行多行粘贴 撤销 u 删除 dd 删除光标所在行 ndd 支持光标所在行进行多行删除 剪切 ddp 在光标所在行进行剪切 nddp 支持多行剪切 取消u操作 ctrlr 1.3.4文本操作 文本行大小写转换 shift~ 文本行批量化替换当前行文本写错不想删除直接shiftr,换一行内容 shiftr shiftr其实由命令模式切换到替换模式 替换光标所在行的一个字符 r 替换光标所在行n个字符只能换成一样的 nr 替换光标所在行的字符随意替换 R 行内删除向后删除一个字符 x 向后删除n个字符包括光标所在位这个位置 nx 向前删除一个字符 shiftx ------X 向前删除n个字符不包括光标所在位这个位置 nshiftx 剪切操作 nxp 删除光标所在行的单词并进入插入模式 cw 删除光标所在行n个单词并进入插入模式 cnw 1.4插入模式命令集 命令模式切换到插入模式 i/a/o 1.5底行模式命令集 调出/取消行号 set nu/nonu 强制退出 q! 强制写入 w! 强制写入并退出 wq! 分屏 vs 文件名 无论分多少屏幕光标只有一个光标的意义选中当前行编辑的位置或者屏幕。 光标跨屏幕 ctrlww 有了这个指令就可以尝试在不同文件里进行其他操作了 不退出vim,执行Liunx命令 !指令 按q退出 替换 %s/前/后/g 把文件里属于前的内容全部用后的内容替换 2.vim配置 1.vim配置是一人一份的一个用户配置的是自己的不影响别人。 2.每个人虽然用的都是同一个vim程序但是大家用的是不同的vim配置这是因为每个用户在自己家目录下配置这样就是独属于自己的配置了。 vim的基本配置 在自己家目录下创建一个.vimrc文件在里面配置 打开文件会自动显示行号 感兴趣可以到网上搜索一下vim配置配置属于你自己的那一份。 这里有一份别人配置好的分享给大家。 vim配置 往下翻找到这个复制这条命令在自己家目录下执行这条命令 输入root密码然后等待安装 这样就配置就完成了。自己上手看一下效果 这里就是我们配置好的文件不要删除保留即可 这里配置Tab有一点点问题打开.vimrc文件 找到这里把2都修改成4保存退出这样完整的一份vim就好了。 3.sudo配置 1.先把自己切换成root 2.编辑sudoers文件 找到这里复制粘贴一下然后强制保存退出 在sudo提权的时候输入一下自己的密码就可以正常使用了。 4.Linux编辑器-gcc/g使用 4.1背景知识 我们知道程序编辑完ctrlF5就会把编译和链接都完成了。但是编译到链接又分了几个步骤 1.预处理头文件展开去注释宏的替换条件编译 2.编译把c语言变成汇编语言 3.汇编把汇编语言生成二进制指令 4.链接将目标文件和链接库进行链接生成可执行文件 4.2gcc如何操作 格式 gcc [选项] 要编译的文件 [选项] [目标文件] 以下面这段代码为例 1.直接完成编译和链接过程生成可执行程序 gcc test.ca.out就是可执行程序 ./a.out执行可执行程序 2.依次处理编译和链接过程 预处理 预处理功能主要包括头文件展开去注释宏的替换条件编译等。 预处理指令是以#号开头的代码行。 实例: gcc –E test.c –o test.i选项“-E”,该选项的作用是从现在开始进行程序的翻译当预处理完成之后就停下来 选项“-o”是指形成的临时文件,“.i”文件为已经过预处理的C原始程序 编译 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。 实例: gcc -S test.i -o test.s选项“-S”,该选项的作用是从现在开始进行程序的翻译做完编译工作变成汇编语言后就停下来。 汇编 汇编阶段是把编译阶段生成的“.s”文件转成目标文件该目标文件不是可执行文件只是二进制目标文件 实例: gcc -c test.s -o test.o选项“-c”,该选项的作用是从现在开始进行程序的翻译做完汇编工作编程二进制目标文件就停下来 下面指令可以查看二进制指令 od test.o做完上面的工作一定不能忘记链接的过程因为上面的只是在编译你的代码就比如说printf是一个库函数我们直接就使用了头文件展开只是告诉这个函数怎么用有这个函数。并没有定义它必须要去库里面找。 链接 把自己写的代码与C标准库的代码合起来形成可执行程序 实例 gcc test.o -o mytest指定可执行程序名称 gcc test.o 形成可执行程序默认名称为a.out 如果想执行C代码把gcc换成g 5.函数库 就如上面所说printf我们并没有去定义实现它头文件包含了对该函数的声明而没有定义函数的实现那么是在哪里实现printf函数的呢 答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用 5.1函数库的分类 链接的本质就是我们调用库函数的时候和标准库如何关联的问题。 函数库分为动态库和静态库。 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a” 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。 动态库和静态库优缺点 优点 动态库形成的可执行程序小节省资源内存磁盘网络。 静态库不受库升级或者被删除等影响。 缺点 动态库受到库升级或被删除等影响 静态库形成可执行程序太大 gcc默认生成的二进制程序是动态链接的这点可以通过 file 命令验证 file mytest查看可执行程序依赖的动态库列表 ldd mytest动态库 libxxx.so lib前缀 .so后缀 去掉前缀和后缀剩下的就是库名称 静态库 libxxx.a lib前缀 .a后缀 Liunx下默认形成可执行程序使用“动态库” 动态 gcc test.c -o mytest静态需要指定 gcc test.c -o mytest -static注意 如果系统中只提供.so文件只能用动态链接或者只提供.a文件,即使不指定static也是静态链接。如果动静态库都有默认使用动态库。 一般而言系统会自动携带动态库的这是因为系统的运行就需要动态库。静态库如果不存在需要自己手动安装。 安装C静态库 sudo yun install -y glibc-static安装C静态库 sudo yum install -y libstdc-static关于Liunx的动静态库的问题在windows下原理是一样的。 默认形成可执行程序动态链接 windows下动态库后缀.dll静态库后缀.lib 注意系统本身为了支持我们编程除了提供标准库.h还提供了标准库的实现.so/.a 6.Liunx调试器-gdb使用 Liunx和windows调试方式不一样但调试思路是一样的。 Liunx是使用gdb命令行调试 6.1背景知识 1.程序的发布方式有两种debug模式和release模式。 2.Linux gcc/g出来的二进制程序默认是release模式。gdb不能直接对release模式下发行的程序进行调试需要改成debug模式下发行的程序。 3.生成debug模式下的程序必须在源代码生成二进制程序的时候, 加上 -g 选项 总结 gcc默认行为 1.默认动态链接 2.默认release模式 vim默认行为 1.默认打开就是命令模式 开始调试 gcc test.c -g -o mytestgcc mytest退出调试 q6.2gdb命令集 下面命令都是简写也可以使用完整的命令 显示代码 list l从0行开始显示代码 l 0这里显示代码并不会完全显示出来再按回车键继续显示 在n行设置断点 break b n查看断点 info b删除断点 delete d 编号调试运行跑到断点处 run r逐过程 next n逐语句 step s跳转到下一个断点处 contiue c查看函数调用堆栈 bt执行当前函数返回然后停下来等待命令 finish查看变量/地址 p只显示一次 p 变量/地址常显示 display 变量/地址取消常显示 undisplay 编号跳转到指定行 until n修改变量的值 i是变量 set var i100显示当前栈帧局部变量的值 info locals禁用断点 disable breakpoint 编号启用断点 enable 编号7.Linux项目自动化构建工具-make/Makefile 7.1背景 1.会不会写makefile从一个侧面说明了一个人是否具备完成大型工程的能力 2.一个工程中的源文件不计数其按类型、功能、模块分别放在若干个目录中makefile定义了一系列的规则来指定哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至于进行更复杂的功能操作 3.makefile带来的好处就是——“自动化编译”一旦写好只需要一个make命令整个工程完全自动编译极大的提高了软件开发的效率。 4.make是一个命令工具是一个解释makefile中指令的命令工具一般来说大多数的IDE都有这个命令比如Delphi的makeVisual C的nmakeLinux下GNU的make。可见makefile都成为了一种在工程方面的编译方法。 5.make是一条命令makefile是一个文件两个搭配使用完成项目自动化构建。 7.2makefile原理 makefile存在的意义是为了构建项目做一件事情。 构建项目需要1.依赖关系 2.依赖方法 比如要做一件事情找你爸要钱。 a.表明依赖关系我是你的儿子/女儿 b.表面依赖方法你得给我转钱 7.3初步理解makefile的语法 在代码路径下创建一个makefile文件 第一行依赖关系左边是目标文件/可执行程序右边是依赖文件列表 第二行依赖方法必须以Tab键开头 依赖关系目标文件/可执行程序与源文件互相依赖关系 依赖方法根据依赖关系从依赖文件列表生成目标文件/可执行程序 有了可执行程序还需要一个删除可执行程序指令。 clean不需要依赖 .PHONY被该关键字修饰的对象是一个伪目标该目标总是可以被执行 再看下面图片对比一下两张图片 发现只能make一次make clean可以执行多次gcc是如何得知我不需要编译了呢 stat 文件名查看文件属性 Access文件被访问的时间 Modify:文件内容被修改的时间 Change:文件属性被修改的时间 修改文件内容的时候发现文件属性也变了这是为什么 因为文件大小变量属性也就变了。文件属性包括文件名类型大小。。。 至于大家看到Access也变了下面就解释。 在看下面一张图片 当我们读取内容的时候发现有的时候Access时间不变这是为什么呢 首先回答文件操作时改文件内容多还是访问多 肯定时访问多。如果一访问就修改Access的时间需要进行多次IO操作其次没人会关心访问文件多少次。 因此一段时间访问次数够了Access才会变。 gcc是根据对比源文件和可执行程序的Modify时间的新旧来判断来判断可执行程序是否重新编译。 源文件比可执行程序时间旧就不用重新编译如果新就重新编译。 因此凡是被.PHONY修饰的不再根据对比modify时间新旧的策略而是总是执行一次。 7.4两个问题 问 为什么make就可以执行makefile第一条规则执行第二条规则必须make clean 答 make默认从上到下扫描文本默认第一个被扫描的目标文件可以省略名称。 问 make为什么走完第一条规则就不往下走了 答 默认情况下makefile只形成一个目标文件后续的依赖关系和依赖方法不再执行默认从上到下扫描只执行第一个。默认不指定就执行第一个。 7.5makefile推导规则 mytest:test.c其实mytest并不直接依赖test.c 真实情况是这样 mytest:test.ogcc test.o -o mytest test.o:test.sgcc -c test.s -o test.o test.s:test.igcc -S test.i -o test.s test.i:test.cgcc -E test.c -o test.imytest依赖test.otest.o不存在因此不执行依赖方法然后去找test.o。。。。最后test.i依赖test.ctest.c存在执行依赖方法然后层层返依次执行。 但是不推荐这样写直接mytest:test.c下面跟着依赖方法就行了。 自此关于Liunx编辑器vim编译器gcc/g调试器gdbvim配置sudo配置以及简单了解Liunx项目自动化构建工具make/makefile到这里暂时告一段落。 觉得有帮助的点赞评论收藏谢谢
http://www.dnsts.com.cn/news/250835.html

相关文章:

  • 拖拽式可视化编辑网站网站设计怎么划分块
  • 在线推广是网站推广的首要工具深圳3d网站建设
  • 昆明网站推广哪家好飞机加速器
  • 网站推广效果的评价指标购物网站如何做推广
  • 服务网站欣赏互联网乌镇峰会
  • 国家企业信用信息公示网查询系统网站优化包括哪些内容
  • 为什么做的网站预览出来什么都没有医学教育网站建设方案
  • 免费广告行业网站建设网站源代码分列怎么做
  • 两学一做网站 苏州建设工程交易中心是什么
  • 网站被k广安做网站公司
  • 企业做网站被骗江苏省建设招标网站首页
  • 重庆微信网站制作专家做徽章标牌的企业网站
  • 重庆网站备案系统外包公司
  • 做 英语试题的网站网站开发项目教程任务分解
  • 做网站在哪买域名微信开发者平台取消授权
  • 微信分销网站建设用途天津外贸营销型网站建设
  • 建设网贷网站怎么安装wordpress模板安装教程
  • 晋城做网站公司上海网站制作哪家奿
  • 网站怎么更新文章浙江省建筑信息港官网
  • ps做专业网站怎么建设彩票网站
  • 网站 东莞长安网站建设在线商城
  • 在网站上有中英切换怎么做好点的开发网站的公司
  • 网站正在建设中英语怎么说怎么填写网站备案申请
  • 西安网站建设总部wordpress 4.01
  • 南通网站建最近三天的新闻热点
  • 购物网站案例网站开发课设心得体会
  • 北京网站建设 降龙网潍坊网站建设 绮畅
  • 上海建网站多少钱网站建设消费者群体分析
  • 网络公司网站建设方案书甘孜商城网站建设
  • 阜新网站优化中小企业建设网站应注意