Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1353002
  • 博文数量: 370
  • 博客积分: 10654
  • 博客等级: 中将
  • 技术积分: 4396
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 15:44
文章分类

全部博文(370)

文章存档

2012年(36)

2011年(195)

2010年(139)

分类: LINUX

2011-07-27 08:08:20

西邮Linux兴趣小组10暑期学习周总结

第一周(715日至721日)

  第三组

组长:陈嘉杰

组员: 张释文 李毅艺   曹宝文  齐航空   扬帆

本周任务

     完成《鸟哥Linux的私房菜》基础学习篇第一部分的学习。
    主要掌握linux安装方法,各种设备在linux中的识别代号,熟悉linux基础的应用。在本部分里面经常用的是man命令,这是一个很有用的命令,用它可以帮助我们获得其他的命令的具体的描述和使用方法。

完成《Linux C 编程实战》前五章
    了解Linux系统和常用的命令;编程基础的巩固,vimgccgdbmakefile的学习和使用。(这里只安排一周的时间,但需要以后的不断练习,这里的这些工具要反复的使用才能熟练的掌握)


齐航空
一.学习心得体会
    经过一周的学习,我觉得我在这一周学到了很多的知识,对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学习有帮助的书,有问题要及时记录下来,在小组间讨论。 众人拾柴火焰高,每个人都有自己所擅长的地方和薄弱的地放,通过大家的一起商讨,能有效的解决问题,!
   
       不抛弃,不放弃!小组成员们加油!


阅读(738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~