学习计时:共xxx小时 读书: 代码: 作业: 博客: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、学习目标 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
二、学习资源 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 教材:第一章,第七章 2. 《嵌入式Linux应用程序开发标准教程》第三章3.1-3.5 3. 课程资料:https://www.shiyanlou.com/courses/413 实验二,课程邀请码:W7FQKW4Y 4. Vim编辑器:https://www.shiyanlou.com/courses/2 5. Linxu系统编程:https://www.shiyanlou.com/courses/24,实验2、3、4 6. 教学视频:http://pan.baidu.com/s/1kTHxOFl ,可以参考第十个视频 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
三、学习方法 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。 2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第二周学习总结”
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
四、学习任务 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:请将要求学生完成的任务、测验或思考题列在此处) 1.教材第一章,第七章学习:阅读并消化教材内容(有部分考试内容) 2.《嵌入式Linux应用程序开发标准教程》第三章3.1-3.5的学习(本周大部分考试内容都从这出,特别是与教材重复内容) 3.完成实验并发Blog
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
五、后续学习预告(可选): |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教材第二章《信息的表示和处理》 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
六、学习过程 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等) 1. 重要知识点总结梳理: vim部分 1、Vim的6种基本模式:
常用的是普通模式、插入模式和命令行模式。 2.三种常用模式的切换1)vim启动进入普通模式; 2)处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式; 3)普通模式中按i(插入)或a(附加)键都可以进入插入模式; 4)普通模式中按:进入命令行模式; 5)命令行模式中输入wq回车后保存并退出vim。 3、进入vim 1)在终端中输入 vim 文件名; 2)在终端中输入vim,进入vim界面中,进入命令行模式输入:e 文件路径(文件名)。 4、游标移动在普通模式下,有以下规则:
5、进入插入模式 在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入
6、命令行模式下保存文档从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下 7、退出vim1)命令行模式下退出vim从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑 以下为其它几种退出方式:
2)普通模式下退出vim普通模式下输入Shift+zz即可保存退出vim 8、删除文本1)普通模式下删除vim文本信息进入普通模式,使用下列命令可以进行文本快速删除:
9、字符的替换及撤销(Undo操作)1)替换和撤销(Undo)命令替换和Undo命令都是针对普通模式下的操作
10、快速缩进1)使用命令进行快速调整缩进操作缩进操作均在普通模式下有效
2)shiftwidth命令shiftwidth命令是指>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式 对shiftwidth值进行设置可以控制缩进和回退的字符数。 获取目前的设定值:set shiftwidth? ;设置缩进为10个字符:set shiftwidth=10 11、调整文本位置命令行模式下输入:ce(center)命令使本行内容居中 :ce 命令行模式下输入:ri(right)命令使本行文本靠右 :ri 命令行模式下输入:le(left)命令使本行内容靠左 :le 12、查找1)快速查找普通模式下输入/向下查找,输入?向上查找,n表示继续查找,N反向查找。 2)高级查找
13、多文件编辑1)使用vim编辑多个文件编辑多个文件有两种形式:一种是在进入vim前使用的参数就是多个文件;另一种就是进入vim后再编辑其他的文件。 同时创建两个新文件并编辑 $ vim 1.txt 2.txt 默认进入1.txt文件的编辑界面 $ vim -r 1.txt
2)进入vim后打开新文件
3)恢复文件如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入:ewcover 1.txt来恢复 14、可视模式
15、视窗操作打开多个窗口进行编辑:在命令行模式下输入:new 下述列举的多种方法也可以在命令模式或普通模式下打开新的视窗:
16、创建加密文档: $ vim -x file117、在vim执行外部命令在命令行模式中输入!可以执行外部的shell命令
18、vim中的查看帮助
19、功能设定1)vim的功能设定要永久保存配置需要修改vim配置文件。 vim的配置文件~/.vimrc,可以打开文件进行修改. 2.获取目前的设定
3.set功能的说明
linux下c编程基础部分 1、C语言的特点 1)中级语言 2)结构化 3)功能齐全 4)可移植性强 2、linux下C语言的编程环境 1)vim编辑器:编写代码 2)gcc编译链接器:编译程序
注意:gcc的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件],其中,目标文件可默认,gcc默认生成可执行的文件,名为编译文件.out. (1)gcc编译常用选项:-E(只预编译)、-S(只编译不汇编)、-o(将file文件指定为输出文件)、-c(只编译不链接)、 -I dir(在头文件的搜索路径列表中添加dir目录)、-g(在可执行程序中包含标准调试信息) 库选项:-static(进行静态编译,即链接静态库、禁止使用动态库)、-shared(生成动态库文件、进行动态编译,在没有动态库时才会链接同名静态库) -L dir (在库文件的搜索路径列表中添加dir目录)、-lname、-fPIC(生成使用相对地址的位置无关的目标代码,然后使用gcc的-static选项从该PIC目标文件生成动态库文件) (2)静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so” (3)静态链接库的生成: gcc -c 文件名.c ar rcsv libxxx.a xxx.o 静态库的使用: gcc -o 文件名 文件名.c -L. -lxxx //链接到静态库 注意:-L :在库文件的搜索路径列表中添加dir目录 -l : 在头文件的搜索路径列表中添加dir目录 (3)共享库的生成 gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o 共享库的使用:gcc -o main main.c -L. -lxxx (4)注册共享库的方法 a、修改/etc/ld.so.conf文件 b、修改LD_LIBRARY_PATH环境变量 c、将库文件直接复制到/lib或者/usr/lib目录下: cp (lib+name).so /lib (5)gcc警告和出错选项列表 -w(关闭所有告警)、-Wall(允许发出gcc提供的所有有用的报警信息)、-werror(把所有的告警信息转化为错误信息,并在告警发生时终止编译过程) 3)gdb调试器:调试代码 (1)使用流程
注意:程序的运行状态有“运行”、“暂停”、“停止“三种。 (2)基本命令:help 主要命令: 工作环境相关命令 设置断点与恢复命令 源码查看相关命令 查看运行数据相关命令 修改运行参数相关命令 (3)断点的设置 函数:b 文件名.c:函数名 行:b 行数 条件:b 行数 if 表达式(b 8 if == 10) 临时:tb [文件名:]行号或函数名 <条件表达式> 4)make项目管理器:识别文件代码是否更新,减少编译工作量 原理:make工程管理器又名“自动编译管理器”,它可以根据文件时间戳自动发现更新过的文件而减少编译工作量,能够读入makefile文件的内容来执行编译工作。编译分为编译、汇编、链接阶段,其中编译阶段仅检查语法错误以及函数与变量是否被正确声明;链接阶段主要完成函数链接和全局变量的链接。 (1)makefile文件的编写规则 格式为: 目标体:依赖文件 [tab键]各目标体运行命令 目标体:由make创建,通常是目标文件或可执行文件 依赖文件:创建目标体所依赖的文件 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头。 使用make的格式:make 目标体 (2)makefile变量的定义 递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容。 格式定义:VAR = var 展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用。 格式定义:VAR := var make中变量的使用格式: $(变量名) 变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感。 变量分类:用户自定义变量、预定义变量、自动变量及环境变量。 (3)makefile规则 隐含规则 模式规则 2. 教材代码编译运行 gdb的练习 3. 课后作业 (1)练习代码
gcc编译过程图(静态库的创建) gcc编译过程图(动态库的创建) gcc编译过程图(运行结果) make实现上述代码的静态库使用自动化 make实现上述代码的动态库使用自动化 makefile文件为: (2)gdb调试过程练习例子 (3)make实现使用自动化的例子
参考资料:(参考论文、图书、网站、同学的内容一定要进行标注,否则以作弊论处,本次作业判0,三次以上的以课程考试作作弊论,并在立此存照(http://www.cnblogs.com/rocedu/p/4795939.html)中曝光) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
七、遇到的问题及解决 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此处由学生填写,是重要的得分点,要写出遇到的问题和解决方案以及对出现问题的思考) vim学习部分 1、行内跳转:普通模式下使用下列命令在行内按照单词为单位进行跳转,以下操作不能实现功能:
2、问题如图,无法实现该操作的练习:
3、问题如图,无法实现该操作的练习:
4、编译作业中要求编译的代码,出现错误,找不到头文件,如图所示: 错误原因:因为对图片的理解错误,直接将图片内容写入了同一个文件中。 5、gdb设置断点,没有效果,问题如图。 6、不会画依赖图 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
八、其他 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(提示:此处由学生填写,灵感,领悟等) |