其他分享
首页 > 其他分享> > 20201322 学习笔记1

20201322 学习笔记1

作者:互联网

一、知识点归纳

第一章:引言

1.3本书目标

(1)强化学生的编程背景知识

(2)动态数据结构的作用

(3)进程概念和进程管理

(4)并发编程

(5)定时器和定时功能

(6)信号、信号处理和进程间通信

(7)文件系统

(8)TCP/IP和网络编程

1.13使用Linux

Linux内核位置:/boot Linux内核映像的三部分:BOOT|SETUP|linux kernel Linux登录进程的三个文件流:stdin、stdout和stderr

Linux命令执行:登录后,用户进程通常会执行命令解释程序sh,后者将提示用户执行命令。sh将直接执行一些特殊命令,如cd、exit)、logout。

1.15Unix/Linux文件系统组织

 

 

1.15.3 Unix/Linux中最常用的命令

第二章 编程背景

2.1 Linux中的文本编辑器

Linux中,文件编辑、文本编辑是必不可少的基本操作。首先学习vim,即使用命令行进行文本编辑,若熟练掌握其中的命令,就可以很快完成。gedit:类似于Windows中的记事本,是一个简单的图形界面文本编辑器。emacs:更加强大,具有更多功能的图形界面文本编辑器。

2.1.1 vim

vim有3种不同的操作模式,分别是

vim启动时,处于默认的命令模式

移动光标的命令键示例如下:

h:将光标向左移动一个字符

l:将光标向右移动一个字符

j:将光标向下移动一个字符

k:将光标向上移动一个字符

要输入文本进行编辑,用户必须输入i(插入)或a(追加)命令将vim切换到插入模式:

:w:写入(保存)文件。

:q:退出vim。

:wq:保存并退出。

要退出插入模式,请按ESC键一次或多次。在命令模式下,输入“:”进入末行模式,将文本保存为文件或退出vim。

2.7.1 makefile格式

一个make文件由一系列目标项、依赖项和规则组成。目标项通常是要创建或更新的文件,但它也可能是make程序要引用的指令或标签。目标项依赖于一系列源文件、目标文件甚至其他目标项,具体描述键依赖项列表。规则是使用依赖项列表构建目标项所需的命令。

例子:

一个C程序,三个源文件:type.h、mysum.c、t.c 使用gcc编译: gcc -o a.out main.c mysum.c 使用makefile:有一个名为Makefile的文件:

myt:type.h t.c mysum.c    #依赖列表
gcc -o myt t.c mysum.c     #rule命令,make时执行。

2.7.2 make程序

当make程序读取makefile时,它通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项。如果任何依赖项在上次构建后有较新的时间戳,make将执行与目标项有关的规则。假设我们有一个C语言程序包含3个源文件:

  1. type.h file: // 头文件

    int mysum(int x, int y) // types, constants,etc

  2. mysum.c file // C语言中的函数

#include <stdio.h>
#include "type.h"
int mysum(int x, int y)
{
  return x+y;
}

t.c file:

#include <stdio.h>
#include "type.h"
int main()
{
  int sum = mysum(123,456);
  printf("sum = %d\n", sum);
}

通常,我们会使用sh命令

gcc -o myt main.c mysum.c

生成一个名为myt的二进制可执行文件。下面我们将使用makefile演示C语言程序设计的编译链接。

2.7.3 makefile示例

示例2.5:makefile。 (1)创建名为mk1的makefile,包括:

myt:type.h t.c mysum.c     # target: dependency list
  gcc -o myt t.c mysum.c # rule: line MUST begin with a TAB

在本示例中,生成的可执行文件名myt通常与目标项名称匹配。这允许make通过将目标项时间戳与依赖项列表中的时间戳进行比较,来决定稍后是否再次构建目标项。 (2)使用mk1作为makefile运行make:make通常使用默认的makefile或Makefile,即当前目录中出现的makefile。它可以通过-f标志直接使用另一个makefile,如:

make -f mk1

make将构建目标文件myt,并将命令执行显示为:

gcc -o myt t.c mysum.c

(3)再次运行make命令,将会显示消息:

make:'myt' is up to date

在这种情况下,make不会再次构建目标,因为在上次构建后没有任何文件更改。

(4)相反,如果依赖项列表中的任何文件有更改,make将再次执行rule命令。一种简单的文件修改方法是使用touch命令,修改文件的时间戳。那么,如果我们输入sh命令:

touch type.h // or touch *.h, touch *.c, etc.

make -f mk1

make将重新编译链接源文件,以生成新的myt文件。 (5)如果我们从依赖项列表中删除一些文件名,即使这些文件有更改,make也不会执行rule命令。读者可以尝试自行验证。 可以看出,mk1是一个非常简单的makefile,它与sh命令的差别不大。但是,我们可以改进makefile,使之更加灵活和通用。

makefile 变量:makefile支持变量。在makefile中,%是一个与sh中的*类似的通配符变量。makefile还可以包含自动变量,这些变量在匹配规则后由make设置。自动变量规定了对目标和依赖项列表中元素的访问,从而用户不必显示指定任何文件名。自动变量对于定义一般模式规则非常有用。以下列出了make的一些自动变量。

2.8 GDB调试工具

gdb断点设置指令总结:

(gdb)break 7 //以行号设置断点
(gdb)break function_name //以函数名设置断点
(gdb)clear 行号 //删除这行的断点
(gdb)clear 函数名 //删除该函数的断点
(gdb)delete breakpoints n //删除第n次(指定编号)设置的断点
(gdb)clear //删除程序中所有的基于行设置的断点
(gdb)delete //删除程序中所有的断点
(gdb)r //执行程序
(gdb)n //单步调试
(gdb)c //执行到下一个断点
(gdb)print 变量或表达式 //打印变量或表达式当前的值。
(gdb)print 变量=值 //对变量进行赋值
(gdb)whatis 变量或表达式 //显示变量类型
(gdb)set variable 变量=值 //变量赋值

二、问题与解决思路

问题:安装ubuntu后,虚拟机黑屏。

网上查询后,发现是由于显卡驱动问题导致,安装好显卡驱动后成功。

解决办法:

  1. 选择相应内核的“recovery model”

  2. 进去系统之后编辑'''/etc/default/grub''' 这个文档

sudo gedit /etc/default/grub

3.找到这一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"

4.更新GRUB:

sudo update-grub

5.存档,并重启。

参考:https://zhuanlan.zhihu.com/p/436853550

三、实践内容与截图

使用ubuntu进行简单的c语言编程

使用vim创建c语言文件 vim hello.c

 

输入i切换到插入模式编辑代码 编辑完后输入":"进入末行模式,输入:wq退出并保存

程序实现了输出“hello linux”   进行简单的乘法

2.使用makefile进行简单c语言编程

新建makefile文件  nano makefile 编辑

make编译   ./main1运行

运行成功

 

标签:文件,mysum,make,makefile,笔记,学习,gdb,Linux,20201322
来源: https://www.cnblogs.com/iris2333/p/16656343.html