一、Vim的基本操作。

Normal模式下

1.h 键 向左移动光标   2.  j  键  向下移动光标   3. k 键 向上移动光标 4. l键  向右移动光标

5.x 键  删除光标所在位置的字符 6.i 键  插入文本 7.dw 光标移至单词开头输入,删除整个单词

8.[number] +[command]+[object] 

9.p 键 在光标处重新置入缓冲区内的字符 10.r +[字母] 可以替换光标处错误的单个字符 11 . [number]+ c + [object] 更改命令,cw更改单词,c$更改本行。

11.Ctrl+g 显示当前光标所在位置行数及文件信息。 12. Shift+g 跳到末尾行;[行数]+Shift+g 跳到指定行数。 

13. / + [xxxx] 从前向后 搜索指定字段;n继续查找上次查找字段;Shift+ n 从相反方向查找 14.? +[xxxx] 从后向前搜索指定字段。

15. % 键    光标选中]})括号后按可以查看对应括号 16.  :s/old/new 替换

17. :![command]  用来执行外部命令 18.:w  [FILENAME]

19.o 在光标下方一行插入字符串  O 在光标上方一行插入字符串              20.a在光标所在位置之后插入 A 在光标所在行的末尾插入

21.R 进入替换模式,ESC退出、  21. :set [xxxx] 设置xxxx选项

 二.GCC编译器

基本规则

.c为后缀的文件,C语言源代码文件;

.a为后缀的文件,是由目标文件构成的档案库文件;

.C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理;

.h为后缀的文件,是程序所包含的头文件;

.i 为后缀的文件,是C源代码文件且不应该对其执行预处理;

.ii为后缀的文件,是C++源代码文件且不应该对其执行预处理;

.m为后缀的文件,是Objective-C源代码文件;

.o为后缀的文件,是编译后的目标文件;

.s为后缀的文件,是汇编语言源代码文件;

.S为后缀的文件,是经过预编译的汇编语言源代码文件。

编译过程 

预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp

生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调用ccl

翻译成汇编文件 汇 编:gcc –c hello.s –o hello.o; gcc -c 调用as

翻译成可重定位目标文件 链 接:gcc hello.o –o hello ; gcc -o 调用ld** 创建可执行目标文件

实验楼例题 

但是编译发生错误。

三. GDB。

基本操作

·        
gdb programm(启动GDB)

·        
b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)

·        
run 开始运行程序

·        
bt 打印函数调用堆栈

·        
p 查看变量值

·        
c 从当前断点继续运行到下一个断点

·        
n 单步运行

·        
s 单步运行

·        
quit 退出GDB

·        
display 跟踪变量值的改变

·        
until 跳出循环

·        
finish 跳出函数

·        
help 帮助

man 命令对其解释

四.MarkFile

基本介绍

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,
哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见makefile都成为了一种在工程方面的编译方法。

Makefile的规则

target ... : prerequisites ...

command

...

Makefile执行后的图...

目标:依赖

执行指令 ...

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。

① prerequisites就是,要生成那个target所需要的文件或是目标。

② command也就是make需要执行的命令。(任意的Shell命令)

这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行(command一定要以Tab键开始,否者编译器无法识别command),减少重复编译,提高了其软件工程管理效率。

​定义变量

$*

不包含扩展名的目标文件名称。

$+

所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。

$<

第一个依赖文件的名称。

$?

所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。

$@

目标的完整名称。

$^

所有的依赖文件,以空格分开,不包含重复的依赖文件。

$%

如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为

mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。

AR

归档维护程序的名称,默认值为 ar。

ARFLAGS

归档维护程序的选项。

AS

汇编程序的名称,默认值为 as。

ASFLAGS

汇编程序的选项。

CC

C 编译器的名称,默认值为 cc。

CFLAGS

C 编译器的选项。

CPP

C 预编译器的名称,默认值为 $(CC) -E。

CPPFLAGS

C 预编译的选项。

CXX

C++ 编译器的名称,默认值为 g++。

CXXFLAGS

C++ 编译器的选项。

FC

FORTRAN 编译器的名称,默认值为 f77。

FFLAGS

FORTRAN 编译器的选项。

Linux(9.21-9.27)学习笔记的更多相关文章

  1. linux内核分析第四周学习笔记

    linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  2. Linux内核分析第二周学习笔记

    linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  3. linux内核分析第一周学习笔记

    linux内核分析第一周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. Linux简易APR内存池学习笔记(带源码和实例)

    先给个内存池的实现代码,里面带有个应用小例子和画的流程图,方便了解运行原理,代码 GCC 编译可用.可以自己上网下APR源码,参考代码下载链接: http://pan.baidu.com/s/1hq6 ...

  5. Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)

    齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...

  6. Linux文件与目录管理(学习笔记)

    本笔记为<鸟哥linux私房菜>第六章学习笔记 一.目录与路径 相对路径与绝对路径 绝对路径:一定由根目录 / 写起              正确度比较好 相对路径:不是由 / 写起  ...

  7. linux常用命令(个人学习笔记)

    个人说明:学习linux也有半年左右的时间了,从一开始的只会简单的开关机,到现在的熟悉应用一些简单的命令,还是有些进步的,不过对于我这种菜鸟来说,如果不经常用,发现忘的很快.所以就把在学习过程中遇到的 ...

  8. Linux Unix shell 编程指南学习笔记(第五部分)

    第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符.该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比方: ...

  9. linux scsi相关的一些学习笔记

      最近看scsi相关处理的一些备忘,比较零碎,仅作参考. 先从最显而易见的打印入手: [0:0:0:0] disk ATA INTEL SSDSC2BX20 0150 - [0:0:1:0] dis ...

  10. 嵌入式linux应用开发完全手册学习笔记一

    2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...

随机推荐

  1. Android多进程需要注意的一个地方

    可能很多项目都会有一个自定义的Application,做一些初始化操作以及全局化的一些数据保存,这时如果程序中定义了远程服务(android:process=":remote"), ...

  2. ajax回调中的this.href不执行跳转的解决办法

    1. 问题背景 如下所示代码: $.post("/ems/register",indata, function(data){ if(data != null && ...

  3. 读书笔记——Windows环境下32位汇编语言程序设计(2)配置环境

    一直想买本罗云彬的Win32汇编书,现在终于出典藏版了,就买了本,读一读,涨涨姿势. 我把笔记本光驱拆下来添加了个硬盘,现在想装回去发现坏了,所以守着CD盘,代码却用的是第三版的,这真是个悲剧啊. - ...

  4. Centos Ping不通外网

    安装完成Vm,Centos6.5,设置了网络: 1.VM虚拟网络,采用桥接模式. 2.Centos里各种 设置ifcfg-eth0中的GETWAY,ADDIP等等 vim /etc/sysconfig ...

  5. multiprocessing module in python(转)

    序.multiprocessing python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包mu ...

  6. Cinder 调试 - cinder service 状态为 down

    1. 问题 我们经常会发现某个cinder service 的状态为 down.比如下面例子中 controller 上的 cinder-scheduler 和 block1 节点上 cinder-v ...

  7. 读《深入理解Java虚拟机》有感——第一部分:Class文件的结构

    1.产生 源码(.java文件)——>编译器(如:javac)——>字节码(.class文件)——>虚拟机(如:HotSpot)执行 2.Class文件  1)构成:         ...

  8. Codeforces Round 261 Div.2 D Pashmak and Parmida's problem --树状数组

    题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数.i和j符合f(1,i,a[i])>f(j,n,a[j]),求有多少对这样的(i,j). 解法:分别从左到右,由右到 ...

  9. POJ 2823 Sliding Window 再探单调队列

    重新刷这个经典题,感觉跟以前不一样了,变得更加容易理解了,不讲解了,看代码.注意:要用C++提交,用G++会超时.. 代码: #include <iostream> #include &l ...

  10. ssm中使用hibernate-validator验证BO

    目前比较流行的验证做法:前端jquery-form-validate + 后端hibernate-validate 在pom中添加相关jar: <!-- use hibernate-valida ...