全部博文(370)
分类: LINUX
2011-07-27 08:08:20
西邮Linux兴趣小组10级暑期学习周总结 第一周(7月15日至7月21日) 第三组 组长:陈嘉杰 组员: 张释文 李毅艺 曹宝文 齐航空 扬帆 本周任务: 完成《鸟哥Linux的私房菜》基础学习篇第一部分的学习。 完成《Linux C 编程实战》前五章 齐航空 一.学习心得体会 经过一周的学习,我觉得我在这一周学到了很多的知识,对linux统有了一个更号的认识,对linux下的命令也掌握了很多,然后就是在linnx下的c编程,对vim,gcc,gdb的了解,以及应用。就是感觉在看书需系的同时也要不断的在电脑上实践,在学习c的时候把书上的原程序打上去,然后运行,调试,也会有很大的收获。然后就是多与同学一起交流,遇见问题大家讨论会对学习有很大的帮助。 二.学习进度 学习主要针对鸟哥和linux c编程两本书,鸟哥看到第7章档案与目录管理,c编程看到第5章。看书书的时候在电脑上亲自实践和重要,我觉得看的时候要返回去看第二遍的时候会收获更多。 三.遇到的问题 在学习c编程时对gdb的掌握还不是很好,还要反复的去练习, c语言中条件编译部分还不是很清楚, 在gdb调试程序时还有点困难。 四.感悟 在学习中要不断的去探索,遇到问题时不要跳过问题,要积极的去找资料,查资料,或去问学长,解决这个问题。 扬帆 通过几天的学习,现将学习成果总结如下: gcc大概的编译过程分为:预处理,编译,汇编,链接。知道了每一步大概都会生成什么类型的文件,并了解了一些基本的命令参数。 gdb调试工具,了解了gdb常用的一些参数及用法。 Q1:gdb中未解决问题,调试中链表的输出,如果一个一个输出比较麻烦,求能够一次性输出链表的方法。 struct的对齐,struct在分配内存空间时没有按照所定义的变量大小分配空间,而是根据有效对齐值将变量成员的空间对齐分配,在存储时也是根据有效对齐值存储在不同的地址空间。 Q2:struct对齐中未解决的问题,不了解为什么要这样对齐,计算机在内存中寻址时的具体操作,及struct对齐后对寻址带来的好处? 从鸟哥的私房菜中了解了文件系统基础,同时简单了解硬盘。 Q3:文件系统及硬盘中未解决的问题,不能将ext2文件系统和硬盘联系在一块。 从linux的编程实战中了解了对c语言对文件的操作; Q4:在使用open()函数时,当设置mode为511所创建的文件权限没有向想象中的那样为-rwxrwxrwx,而是-rwxrwxr-x但是在用chmod()函数时设置mode为511就可以有-rwxrwxrwx的权限.为什么? 张释文 1、学习进度 1、《Linux下的c编程实战》一~五章。 2、《鸟哥的私房菜》一~五章 2、问题 1、内存对齐的问题。 最优做法:结构体定义的时候,按从大到小排列,可以节省内存。自己去定义一些无用的变量,以补齐内存,此时可以为编译节省时间。 2、make的意义。 解决方案:对于大型的模块化程序,修改是很麻烦的。而make可以省去很多麻烦。 3、gdb调试器调试不了。 解决方法:gdb调试器针对的是可执行文件,必须将源文件编译链接成可执行文件,才能调试。 4、gdb调试器载不了文件。 解决方案:要用gdb调试器,在gcc编译阶段要记得加-g,不然会载入不了可执行文件。 5、next和nexti的区别 解决方法:next是执行一条语句,而nexti是执行一条机器语言。 6、next和setup的区别。 解决方法:遇到函数调用语句时,next是不仅如函数内部,而setup是进入函数内部。 3、心得 1、Linux命令要多多实践才能熟练。 2、遇到不懂的问题,多去问问别人,人各有所长。 3、多总结学过的东西。 陈嘉杰 学习进度: 《鸟哥的私房菜》前6章。 《linux C 编程实战》 前5章 待解决的问题: 1.《linux C 编程实战》中第五章的make 和make file的内容不太清楚。 2.GDB调试中,p 表达式@表达式值开始的n个数 的用法不理解。 3. 用open函数创建一个文件是所设权限是rwx------ 用creat函数创建和原文件名字相同的文件,给权限为rwxrwxrwx。原文件时间被修改,说明发生更改,但是权限还是rwx------.为什么? 学习体会: 一些感受 刚开始的这6天过的很充实,大家每天都很努力的学习,无形中形成了一股很好的学习氛围!进入小组的每个人都有自己的擅长之处,大家相互指导,解决了很多linux 或者是 C 编程上的问题。 学习情况 前几天的学习是按照计划进行的,对鸟哥那本书看得也比较细,因为是基础,也做了笔记,但合上书本和笔记本还是有些很模糊的问题。linuc C 编程 前面是基础,但也看了一遍,对C的学习有了更好的理解,开始看第六章的内容。 小组讨论总结 Q&A Q1:gdb中未解决问题,调试中链表的输出,如果一个一个输出比较麻烦,求能够一次性输出链表的方法。 A1:GDB 调试中暂时没法现有能够一次性输出链表的方法。 Q2:struct对齐中未解决的问题,不了解为什么要这样对齐,计算机在内存中寻址时的具体操作,及struct对齐后对寻址带来的好处 A2:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数 据。显然在读取效率上下降很多。 Q3.ext2文件系统和硬盘联系 A3:未讨论出结果 Q4.gdb调试器查找匹配字符串search和rverse-search有什么区别? A4:search 是从当前行向下查找。 Rverse-search 是从当前行向上查找。 Q5:生效一次后就失效的断点怎么设置? A5:用disable b n 或者delete b n。 Q6:next和nexti的区别?Setp和setpi的区别? A6:next:是一次执行一行语句,不进入函数内部。 next:是一次执行一条机器指令,不仅如函数内部。 step:是一次执行一行语句,不仅如函数内部。 stepi:是一次执行一条机器指令,不进入函数内部。 Q7: c语言中条件编译部分还不是很清楚, A7:参考《linux C 编程实战》第五章内容。 Q8:再使用open()函数时,当设置mode为511所创建的文件权限没有向想象中的那样为-rwxrwxrwx,而是-rwxrwxr-x但是在用chmod()函数时设置mode为511就可以有-rwxrwxrwx的权限, A8:系统有umask值,设定权限是会参考umask的值. Q9:用open函数创建一个文件是所设权限是rwx------ 用creat函数创建和原文件名字相同的文件,给权限为rwxrwxrwx。原文件时间被修改,说明发生更改,但是权限还是rwx------.为什么? A9:creat函数相当于这样使用open(): Open(const char * pathname, (O_CREAT|O_WRONLY|O_TRUNC)); O_TRUNC:若文件存在并且以可以写的方式打开时,此标志会将会见长度清为0,即原文件中保存的数据将丢失,文件的属性不变。 小组学习心得:linux的学习是循序渐进的,打好linux的基础。在保证进度的基础上,多学一些内容,多看一些对linux学习有帮助的书,有问题要及时记录下来,在小组间讨论。 众人拾柴火焰高,每个人都有自己所擅长的地方和薄弱的地放,通过大家的一起商讨,能有效的解决问题,! 不抛弃,不放弃!小组成员们加油! |