ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20201330马榕辰第一,二章学习笔记

2022-09-04 23:00:17  阅读:163  来源: 互联网

标签:马榕辰 文件 二章 makefile 用户 C语言 20201330 Linux out


第一章:

 

一.知识点归纳:

第一章前半部分重在介绍课程和书本的基本情况,包括Unix  /  Linux的历史,其各种发行版,我了解到了一些基本情况。

后半部分主要是 Linux的使用,Linux的启动过程,Unix/Linux文件系统组织、文件类型和常用的Unix/Linux命令,Linux系统的一些系统管理任务等相关内容。

 

二.学到了什么?(收获)

1.Linux内核映像:内核是与计算机接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。

2.登录进程:各登录进程将在终端上打开三个文件流:stdin(用于输入),stdout(用于输出),stderr(用于错误输出)

3.Ubuntu Linux的特性:用户应为普通用户,不是根用户或者超级用户,运行任何特权命令,用户需输入 sudo command,会验证用户密码。

用户的路径环境变量设置不包括用户的当前目录,在当前目录下、运行程序,每次需输入./a.out。方便起见应更改路径设置。

4.Unix/Linux文件系统组织:文件类型有目录文件、非目录文件(常规文件和特殊文件(字符特殊文件与块特殊文件))、符号链接文件。

5.Ubuntu Linux系统管理:(1)用户账户:当用户使用登录名和密码登录后,登录进程将通过获取用户的gid和uid来转换成用户进程,并将目录更改为用户的homeDir,然后执行列出的initialProgram,该程序通常为命令解释程序sh。(2)sudo命令:在Ubuntu里,sudo(“超级用户执行”)允许用户以另一个用户(通常是超级用户)的身份执行命令,为确保用户能够发出sudo,只需在sudoers文件中添加一行:username ALL(ALL) ALL。

 

第二章:

一.知识点归纳:

第二章主要知识点:

1.介绍了基于GUI的文本编辑器;

2.展示了如何在命令和GUI模式下使用EMACS编辑器来编辑、编译和执行C语言程序;

3.阐述了程序开发的步骤;

4.详细阐释了函数调用惯例和运行时堆栈的使用;

5.展示了C语言程序与汇编代码的链接;

6.讨论了GUNmake工具编写makefile;

7.对如何使用GDB调试工具调试C语言程序给出回答,并防止出现调试过程中出现的常见错误;

8.复习了C语言中的结构和指针。以及数据结构中的二叉树模拟Unix/Linux文件系统树中的操作等。

 

二.学到了什么?(收获)

1.Linux中的文本编辑器:有三个文本编辑器,vim、gedit和EMACS。vim有三种不同的操作模式:命令模式、插入模式和末行模式,vim启动时处于默认的命令模式;gedit是GNOME桌面环境默认的文本编辑器;EMACS(GUN EMACS 2015)是强大的文件编辑器,可以在很多不同的平台上运行。

2.C语言程序变量:全局变量、局部变量、静态变量、自动变量和寄存器变量

3.程序开发步骤

(1)创建源文件:使用文本编辑器创建一个或多个程序源文件

(2)用gcc把源文件转换成二进制可执行文件;

(3)完成gcc三大步骤:1.将C源文件转换为汇编代码文件;2.把汇编代码转换成目标代码;3.执行链接器:将.o文件的所有代码段组合成单一代码段,再将所有数据段组合成单一数据段,最后将所有BSS段组合成单一bss段,用.o文件中的重定位信息调整组合代码段中的指针以及组合数据段、bss段中的偏移量,便于用符号表来解析各个.o文件之间的交叉引用。

4.创建二进制可执行文件的方式:静态链接和动态链接。其中动态链接的优点是:可减小每个a.out文件的大小;许多执行程序可在内存中共享相同的库函数;修改库函数不需要重新编译源文件。

5.大部分C编译器和链接器可生成多种不同格式的可执行文件:(1)二进制可执行平面文件;(2)a.out可执行文件;(a.out文件的内容包括文件头、代码段、数据段和符号表)(3)ELF可执行文件。

6.a.out文件包括文件头,代码段(该代码调用main()函数),数据段,符号表。

7.程序执行过程

(1)读取a.out文件头,确定所需的总内存大小,包括堆栈空间大小;

(2)sh从总大小中分配一个内存区给执行映像。

(3)sh放弃旧映像,开启新映像·

(4)执行从crt0.o开始,调用mian(),将argc和argv作为参数传递给miain();

8.正在执行a.out的进程终止方式有正常终止和异常终止(传递异常信号)。

9.Makefile:一个make文件由一系列目标项(创建或更新的文件,也可能是make程序要引用的指令或标签)、依赖项和规则(使用依赖项列表构建目标项所需的命令)组成。

10.C语言结构体的属性:(1)定义C语言结构体时,该结构体的每个字段都必须具有一个编译器已知的类型,但自引用的指针除外;(2)每个C语言结构体数据对象都分配了一个连续内存块;(3)一个结构体的大小可以由sizeof(struct type)确定;(4)假设“NODE x,y;”为两个相同类型的结构体;(5)C语言联合体与结构体类似。

11.C语言程序中常见的错误:(1)未初始化的指针或含有错误值的指针;(2)数组下标越界;(3)字符串指针和char数组使用不当;(4)assert宏

12.链表基本操作如遍历,插入,搜索等;

13.二叉树基本内容,操作方式;

 

三.问题与解决方式:

问题:makefile的相关内容不能理解,makefile是什么,有什么作用,怎么用;

思路:通过查资料先明白makefile到底是什么,它的目的作用到底是什么,在逐步了解它的主要内容,主要特性,操作方式等

结果:查找到资料makefile的定义:一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,也可以执行操作系统的命令。再具体去了解其余问题       https://blog.csdn.net/nb_zsy/article/details/123082082

 

 四.实践代码,截图:

简单C语言程序再Linux系统文件中编辑

 

 

 

 

 

 

 

 

标签:马榕辰,文件,二章,makefile,用户,C语言,20201330,Linux,out
来源: https://www.cnblogs.com/MRC-/p/16656423.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有