1、计算机系统与连接git
a.文件是对I/O设备的抽象;
b.虚拟存储器是对主存和磁盘的抽象;
c.进程是对处理器、主存和I/O设备的抽象。程序员
网络提供了计算机系统之间通讯的手段ubuntu
静态连接器主要任务:符号解析、重定位vim
a.由m定义并能被其余模块引用的全局符号
b.由其余模块定义并被模块m引用的全局符号
c.只被模块m定义和引用的本地符号安全
2、Vim编辑器服务器
VIMTUTOR是个实践教程,经过实践30分钟让你对VIM编辑器入门,只要在命令行中输入vimtutor,而后跟着教程练习就能够了~网络
1.通常操做
Vim能够仅仅经过键盘在任意模式之中进行切换,这就使得Vim能够不用进行菜单或者鼠标操做,使文字录入员或者程序员能够大大加强速度和效率。vim有6种基本模式(经常使用的是普通模式、插入模式和命令行模式):并发
2.三种经常使用模式的切换:app
3.进入vim:ssh
4.游标移动(在普通模式下,按Esc进入普通模式):
按键 | 说明 |
h | 左 |
i | 右 |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
命令行模式下保存文档:从普通模式输入:
进入命令行模式,输入w
回车,保存文档。输入:w
文件名能够将文档另存为其余文件名或存到其它路径下。
退出vim(经常使用):
a.命令行模式下退出vim:从普通模式输入:
进入命令行模式,输入wq
回车,保存并退出编辑。
b.普通模式下退出vim:普通模式下输入Shift+zz便可保存退出vim。
a.使用命令进行快速调整缩进操做:通模式下输入15G
,跳转到15行;普通模式下输入>>
整行将向右缩进(使用,用于格式化代码超爽);普通模式下输入<<
整行向左回退;普通模式下输入:
进入命令行模式下对shiftwidth
值进行设置能够控制缩进和回退的字符数。
b.shiftwidth
命令:shiftwidth
命令是指>>
命令产生的缩进(能够简写成sw) 普通模式下输入:
进入命令行模式;对shiftwidth
值进行设置能够控制缩进和回退的字符数。 获取目前的设定值:set shiftwidth?
;设置缩进为10个字符:set shiftwidth=10
。
a.命令行模式下输入:ce
(center)命令使本行内容居中
b.命令行模式下输入:ri
(right)命令使本行文本靠右
c.命令行模式下输入:le
(left)命令使本行内容靠左
a.普通模式下输入/
向下查找,输入?
向上查找,n
表示继续查找,N
反向查找。
b.普通模式下输入\*
寻找游标所在处的单词
c.普通模式下输入\#
同上,但\*
是向前(上)找,#
则是向后(下)找
d.普通模式下输入g\*
同\*
,但部分符合该单词便可
e.普通模式下输入g\#
同\#
,但部分符合该单词便可
a.编辑多个文件有两种形式:一种是在进入vim前使用的参数就是多个文件;另外一种就是进入vim后再编辑其余的文件。同时建立两个新文件并编辑$ vim 1.txt 2.txt
b.默认进入1.txt
文件的编辑界面:命令行模式下输入:n
编辑2.txt
文件,能够加!
即:n!
强制切换,以前一个文件的输入没有保存,仅仅切换到另外一个文件;命令行模式下输入:N
编辑1.txt
文件,能够加!
即:N!
强制切换,以前文件内的输入没有保存,仅仅是切换到另外一个文件。
a.命令行模式下输入:e 3.txt
打开新文件3.txt
b.命令行模式下输入:e#
回到前一个文件
c.命令行模式下输入:ls
能够列出之前编辑过的文档
d.命令行模式下输入:b 2.txt
(或者编号)能够直接进入文件2.txt编辑
e.命令行模式下输入:bd 2.txt
(或者编号)能够删除之前编辑过的列表中的文件项目
f.命令行模式下输入:e! 4.txt
,新打开文件4.txt,放弃正在编辑的文件
g.命令行模式下输入:f
显示正在编辑的文件名
h.命令行模式下输入:f new.txt
,改变正在编辑的文件名字为new.txt
恢复文件:vim -r
进入文档后,输入:ewcover 1.txt
来恢复。
建立加密文档:$ vim -x file1
3、GCC的使用
1.gcc 编译程序的流程:
gcc –E cxy.c –o cxy.i
;gcc –E
调用cpp,产生预处理过的C原始程序gcc –S cxy.i –o cxy.s
;gcc –S
调用ccl,产生汇编语言原始程序gcc –c cxy.s –o cxy.o
;gcc -c
调用as,产生目标文件gcc cxy.o –o cxy
;gcc -o
调用ld,产生可执行文件./cxy
2.库选项:-static
(进行静态编译,即连接静态库、禁止使用动态库)、-shared
(生成动态库文件、进行动态编译,在没有动态库时才会连接同名静态库)、-L dir
(在库文件的搜索路径列表中添加dir目录)、-lname
、-fPIC
(生成使用相对地址的位置无关的目标代码,而后使用gcc的-static
选项从该PIC目标文件生成动态库文件)
3.静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);连接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
gcc -c 文件名.c
ar rcsv libxxx.a xxx.o
;gcc -o 文件名
文件名.c -L. -lxxx
//连接到静态库;
4.共享库的生成:gcc -fPIC -c xxx.c
gcc -shared -olibxxx.so xxx.o
;共享库的使用:gcc -o main main.c -L. -lxxx
5.注册共享库的方法:
4、GDB的使用
程序的运行状态有“运行”、“暂停”、“中止“三种。
主要操做:
查看文件:l
b
后加入相对应的行号。例b 6
info b
,在gdb中能够设置多个断点。bt
查询调用函数的状况r
;r
+行号:从该行号开始运行p
变量。例:p n
n
或s
,s
会进入函数,n
不会进入函数c
h
b 文件名.c:函数名
b 行数
b 行数 if 表达式
(例如:b 9 if == 12)tb [文件名:]行号或函数名 <条件表达式>
5、MakeFile的使用
makefile
定义了一系列的规则来指定,哪些文件须要先编译,哪些文件须要后编译,哪些文件须要从新编译,甚至进行更复杂的功能操做。其带来的好处就是——“自动化编译”,一但写好,只须要一个make
命令,整个工程彻底编译,极大的提升了软件的开发效率。makefile
文件编写规则:a.目标文件:由make建立,一般是目标文件或可执行文件
b.依赖文件:建立目标体所依赖的文件
c.运行命令:建立每一个目标体时须要的运行命令,必须以tab键开头
d.格式为:目标文件:依赖文件列表
[tab键]各目标体运行命令
(注意不是空格)
e.使用make的格式:make 目标文件
a.递归展开方式:在引用该变量时进行替换(不能用于引用本身的状况),缺点:不能在变量后追加内容
b.格式定义:VAR = var
c.展开方式:在定义处展开,并只展开一次。优势:消除变量的嵌套引用
d.格式定义:VAR := var
e.make中变量的使用格式: $(变量名)
f.变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感
1.进行GDB调试时,出现错误!
缘由及解决:缘由是生成的二进制可执行文件没有使用-g选项。
gcc中-g选项是为了得到有关调试信息,要用gdb进行调试,必须使用-g生成二进制可执行文件!
2.装git的过程当中(生成公钥时),当使用命令cd ~/.ssh
进入~/.ssh
文件夹,输入gedit id_rsa.pub
打开id_rsa.pub
文件,发现里面是空白的,没有内容。
后来发现是输入 cd ~/.ssh 时出现了错误,“/”符号与“.”符号之间我多输入了一个空格字符。解决问题后,效果以下:
3.最后git push -u origin master的时候,命令行要求输入username,我混淆了概念,我一直输入的是“20145326蔡馨熠”,因此出不来结果,应该是登陆时用的帐号!
4.在本身的虚拟机上用makefile的时候,会出现“XXX is up to date”的问题。网上说好像用.PHONY来解决,我没搞懂。
先要在Ubantu中安装git,使用命令: sudo apt-get install git
其次是设置用户名和用户邮箱,也就是本身在Git@OSC上注册的帐号。
用git config --global user.name "xxx" git config --global user.email "xxx"
而后在ubuntu下生成公钥(id_rsa是私有秘钥,is_rsa.pub是公钥)
ssh-keygen -t rsa -C "413741392@qq.com"
建立完公钥后,须要上传。使用命令 cd ~/.ssh
进入~/.ssh
文件夹,输入gedit id_rsa.pub
打开id_rsa.pub
文件,复制其中全部内容。接着访问http://git.oschina.net/key网页,标题栏能够随意输入,公钥栏把你刚才复制的内容粘贴进去就OK了。
能够测试是否连通:
ssh -T git@git.oschina.net
按照提示操做,若是联通,则出现以下信息:
Welcome to Git@OSC, 20145326蔡馨熠!
在ubuntu下新建一个文件夹 gitcode,而后cd到该文件夹下,把一些文件拷贝到该目录下。
mkdir gitcode
cd gitcode
接下来执行以下命令:
git init(初始化仓库)
git add .(这个点表明该目录下的全部文件)
git commit -m “20145326cxy”
此时工程中的全部文件都以提交到HEAD,可是尚未提交到服务器。
如今能够将代码提交到Git@OSC仓库了
先在Git@OSC项目中添加一个远程仓库origin
git remote add origin https://git.oschina.net/cxy368/caixinyi20145326.git
如今把本地项目master 分支推送到origin仓库
git push -u origin master
统计代码行数
心得体会
本周主要的学习内容就是vim,gcc,gdb以及makefile还有git的安装。其中,vim的使用方法重点在于练习,只有通过不断地练习才能熟练掌握并使用。gcc、gdb和makefile的使用方法有必定的命令格式和规则,只要遵循其规则格式就可以简单编译、运行、调试程序。计算机系统的相关知识重点在于记忆和理解,连接里面的用语有些生疏,一会儿并不能彻底理解,还须要再仔细看看并理解。由于本身电脑上的虚拟机特别卡,因此有时候会用实验楼环境,不过实验楼环境有时候没有注意操做的时间,会被强退掉,以前数据也会所有丢失,我就是由于这个缘由,有一部分的代码敲在实验楼里,没有及时托管,被“吃掉”了,这很尴尬。这周没有安排好时间,把知识都堆在了周末来学,因此感受任务不少,压力很大,git的知识也忘了不少,因此一开始整我的很压抑,效率也不高,可是又不想敷衍本身,因而在调整了本身的状态后,一步一步,循序渐进的开始了个人学习任务,只求质量,不求数量。我仔细看了实验楼里的资料和书上的知识点后,开始动手操做,熟悉vim,gcc,gdb,makefile的相关用法,其实还算简单,由于给的例子特别生动形象,只须要熟记指令及用法,就没什么大问题。安装git的时候虽然中途也有不少问题,但都仍是一一克服了,挺有成就感的,由于从头至尾都是靠的本身,这也算是学习的一种乐趣吧~我以为,首先心必定要静下来,这将决定学习的质量,而后时间上要安排好,不要赶进度,要追求质量!提升本身的学习效率,千万不要敷衍!否则最终害的是本身,后面想补都补不回来。一开始就要赢在起跑线。这学期的课程仍是娄老师给咱们上,虽然平时要求严,不过相比上学期我以为轻松多了,由于娄老师在课上讲的东西更多了,只要认真听,仔细作笔记,就会学得很轻松~ 我会再接再砺,尽最大努力将这门课学好~
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/20 | |
第二周 | 58/58 | 1/3 | 20/40 |