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

学习笔记1

时间:2023-09-10 19:57:02浏览次数:39  
标签:文件 gcc makefile 用户 笔记 学习 编译 GDB

第一次学习笔记

第一章

 

知识点

 

1、系统编程:内存空间用来存放程序和数据,所有的程序必须在内存空间中才能运行。用来容纳操作系统的内存空间叫做系统空间,容纳应用程序的内存空间叫做用户空间。操作系统实现内核提供服务以便使系统程序可以直接访问系统资源。 

2、目的:

(1)实现Unix系统编程中3个重要的方面:通信、协作、网络访问

(2)灵活应用动态数据结构(包括C结构、指针、链表和链树)

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

(4)强化编程背景知识,并通过用户级线程练习并发编程  

(5)实现支持并发任务的间隔定时器  

(6)使用Linux信号和管道来实现一个进程间通信机制

(7)让学生实现一个与Linux完全兼容的完整EXT2文件系统   

(8)可以使用CGI编程来实现一个网络服务器。

3、在unix系统和Linux系统里很少会使用到鼠标,大部分情况下均可使用指令组进行实现,比如ctrl+Alt+t实现快捷指令等等,减少了对鼠标的依赖。

4、文件类型

(1)目录文件

(2)非目录文件:包括常规文件和特殊文件。特殊文件包括字符特殊文件和块特殊文件等。

(3)符号链接文件

5、Unix/Linux命令

 

zip file.zip filenames:将文件压缩为.zip文件

unzip file.zip:解压.zip文件

6、Ubuntu Linux系统管理:

(1)用户账户:当用户使用登录名和密码登录后,登录进程将通过获取用户的gid和uid来转换成用户进程,并将目录更改为用户的homeDir,然后执行列出的initialProgram,该程序通常为命令解释程序sh。

(2)sudo命令:在Ubuntu里,sudo(“超级用户执行”)允许用户以另一个用户(通常是超级用户)的身份执行命令,为确保用户能够发出sudo,只需在sudoers文件中添加一行:username ALL(ALL) ALL。

 

第二章

一、知识点归纳

 

1、文本编辑器

(1)vim

i 插入模式,插入文本     退出插入模式:esc

a 插入模式,追加文本

:w 保存文件

:q 退出vim

:wq 保存并退出vim

:q! 不保存更改,强制退出

 

 

(2)Gedit

 

 

 

 

使用与vim类似,只是快捷键与页面有所区别

(3)emacs

 

 

 

2、程序开发

(1)创建源文件

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

(3)gcc:c源文件--汇编代码文件--目标代码(“.c”--“.s”--“.o”)

(4)链接:静态链接

           动态链接:优点:减少每个a.out文件的大小;许多执行程序可在内存中共享相同的库函数;修改库函数不需要重新编译源文件。

3、a.out

(1)文件头:包含a.out文件的加载信息和大小

Tsize:代码段大小

Dsize:初始化全局变量和初始化静态数据的数据段大小

Bsize:未初始化全局变量和初始化静态数据的bss段大小

Total_size:加载的a.out文件总大小

(2)代码段(正文段):程序的可执行代码

(3)数据段:包含初始化全局变量和初始化静态数据

(4)符号段(可选)

程序终止:正常终止和异常终止

4、C语言中函数调用

(1)32位gcc中的运行时堆栈使用情况

(2)Longjump

(3)64位gcc中的运行时堆栈使用情况

5、C程序与汇编代码链接

(1)用汇编代码编程

(2)用汇编语言实现函数

(3)从汇编中调用C函数

6、链接库

(1)静态链接库

 

 

(2)动态链接库

 

 

7、makefile

makefile 的本质是一个文件,需要配合make指令进行自动化编译。

make是一个命令工具,用来解释makefile文件中的代码,从而实现自动化编译。编译使用的编译器本质上还是GCC。

makefile文件中定义了一系列的规则来指定, 哪些文件需要先编译, 哪些文件需要后编译, 哪些文件需要重新编译, 甚至于进行更复杂的功能操作。

格式:一个make文件由一系列目标项、依赖项和规则组成。

(1)makefile格式

目标项、依赖项、规则

(2)make程序

sh命令:gcc -o myt main.c mysum.c

(3)makefile变量

$@ 当前目标名

$< 第一个依赖项名

$^ 所有依赖项名

$* 不包含扩展名的当前依赖项名

$? 比当前目标更新的依赖项列表

8、GDB调试工具

在emacs IDE中使用GDB

(1)源代码

makefile:t: t.c

                  Gcc -g -o t t.c

(2)编译源代码

Tools菜单--Compile

(3)启动GDB

Tools--Debugger

(4)多窗口GDB

Gud-t 用户命令和GDB消息的GDB缓冲区

t.c 显示执行进度的程序源代码

栈帧 显示函数调用序列的栈帧

本地寄存器 显示当前执行函数中的局部变量

输入/输出 程序I/O

断点 显示当前断点设置

(5)附加GDB命令

·清除断点

clear line# 清除line#的断点

clear name 清除函数(名字为name)中的断点

·更改变量值

set var a = 100

set var b = 200

·监视变量值改变

watch c 监视变量c值改变;每当c的值变化时,将显示其旧值和新值

·回溯追踪

bt stackFrame# 回溯追踪栈帧

9、C语言中函数调用、结构体、指针等内容的复习

10、数据结构中各种链表和二叉树的操作复习

 

苏格拉底挑战

 

 

 

 

 

 

 

 

 

 

问题与解决

 

 

上网查找后发现是wsl未安装gcc,所以无法运行gcc口令。

 

 

 

但myt:: command not found

这一命令问题未解决,与课本命令相同却出现错误。

 

 

 

 

 

参考:https://www.cnblogs.com/zhaoziyu/p/15267405.html

https://blog.csdn.net/weixin_45160175/article/details/132025478

https://blog.csdn.net/qq_41685265/article/details/104296344

标签:文件,gcc,makefile,用户,笔记,学习,编译,GDB
From: https://www.cnblogs.com/1104dd/p/17691752.html

相关文章

  • 学习笔记1
    第一二章知识点归纳系统编程大致内容动态数据库结构进程概念和进程管理并发编程定时器和定时功能信号.信号处理和进程间通信文件系统TCP/IP和网络编程关于Unix/Linux版本信息  Unix系统诞生于20世纪70年代早期,是一种通用的操作系统,大多数Unix系统都是专有的,......
  • SimGCL阅读笔记
    SimGCL论文阅读笔记​ 本篇文章主要讲述了图增强虽然有效果,但是起到的作用很小,然后提出了基于添加均匀的噪声来创建对比视图。这样准确性和效率都会优于原来的方法1.引言部分​ 尽管现在基于结构扰动的图增强具有着很不错的效果,但是性能提升的原因还是不清楚,并且有研究发现,即使......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记1
    20211306密码系统设计与实现课程学习笔记1学习任务详情自学教材第1,2章,提交学习笔记知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一......
  • 20211105李宜时《信息安全系统设计基础》第一周学习总结
    20211105李宜时《信息安全系统设计基础》第一周学习总结老师好,我针对教科书和云班课上面的知识学习了这门课第一章和第二章的知识Linux的一些常用的命令ls:用于列出目录中的文件和子目录。cd:用于改变当前工作目录。pwd:显示当前工作目录的路径。mkdir:创建新的目录。rmdir:删......
  • 第一、二章学习笔记
    一、知识点总结第一章Unix和Linux是两个相关但不完全相同的概念。下面是它们的概论知识点总结:Unix:Unix是一种操作系统家族,设计目标是提供一个可移植、多用户、多任务的操作系统。Unix采用了分层架构,将操作系统划分为内核等组件。Unix引入了许多重要的概念和工具,如文件描述符......
  • 《信息安全系统设计与实现》第一周学习笔记
      </d  第一章知识点归纳:1。进程:进程是计算机中正在运行的程序的实例。在操作系统中,每个进程都有自己独立的内存空间和执行环境。进程可以包含一个或多个线程,每个线程执行进程的一部分任务。进程之间是相互独立的,它们通过进程间通信(IPC)来进行数据交换和协调。每个进程......
  • 《信息安全系统设计与实现》第一周学习笔记
    《信息安全系统设计与实现》第一周学习笔记第一章摘要本章介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本以及其他版本。此外,还介绍了Linux的开发及其各种发行版本,列出了适用于Linux的开发的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到MicrosoftWindows......
  • 学习笔记1
    学习笔记1第一章本书目标强化编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能信号、信号处理和进程间的通信文件系统TCP/IP和网络编程关于UnixAT&TUnixBerkeleyUnixHPUnixIBMUnixSunUnix关于LinuxDebainLinuxUbuntu......
  • 第1、2章学习笔记
    教材第一、二章读书笔记主要内容第一章主要学习了Unix的历史、开发及其各种发行版,列出了适用于Linux的各种硬件平台和虚拟机,揭示了常用的命令和文件系统组织、文件类型。第二章主要学习了基于GUI的编辑器,展示了如何在命令和GUI模式下使用EMACS编辑器来边集、编译和执行C语言......
  • 学习笔记1
    1.知识点归纳①Ubuntu②如何安装虚拟机③如何下载VMwareWorkstation④Unix/Linux命令2.问题与解决过程......