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

学习笔记1

时间:2023-09-10 19:55:51浏览次数:31  
标签:文件 mysum gcc 笔记 学习 Unix hello out

第一二章知识点归纳

  1. 系统编程大致内容
  • 动态数据库结构
  • 进程概念和进程管理
  • 并发编程
  • 定时器和定时功能
  • 信号.信号处理和进程间通信
  • 文件系统
  • TCP/IP和网络编程
  1. 关于Unix/Linux版本信息
       Unix系统诞生于20世纪70年代早期,是一种通用的操作系统,大多数Unix系统都是专有的,并且与特定的硬件平台相关联,出现的各种版本有 AT&T Unix;Berkeley Unix;HP Unix;IBM Unix;Sun Unix。
       Linux系统是一个类Unix系统,从某种意义上讲,它是由各种最为流行的Unix系统组合而成,出现的版本有Debian Linux; Ubuntu Liux; Linux Mint; 基于RPM的Linux; Slackware Linux。

3.虚拟机上的Linux
通过书上内容,我成功安装了一台Ubuntu版本的虚拟机。

通过sudo("超级用户执行")提高权限,下载文本编辑器emacs。
在下载时出现网络不可达问题,上网查找资料后更改了虚拟机设置的网络适配器,将网络连接模式由桥接网络更改为特定虚拟网络NAT模式,安装成功。


下载gcc

  1. 程序开发
    (1)创建源文件。这里简单介绍了全局变量、局部变量、静态变量、自动变量和寄存器变量,通过t1.c文件中static int s;语句所定义的静态全局变量,不能被t2.c文件所引用,我大致明白了静态变量的含义.
    (2)用gcc把源文件转换成二进制可执行文件。
    (3)编译器gcc程序


    首先预处理输出文件hello.i

    将预处理文件hello.i汇编成hello.s文件

    将汇编输出文件hello.s编译输出hello.o文件

    将编译输出文件hello.o链接成最终可执行文件hello

(4)汇编代码说明
gcc生成的汇编代码由三部分组成:

  • 入口代码:建立栈帧,在堆栈上分配局部变量和工作空间。
  • 函数体代码:在AX寄存器中执行带有返回值的函数任务。
  • 推出代码:释放堆栈空间并返回到调用者。

5.静态与动态链接
创建二进制可执行文件方式有两种,分别是静态链接和动态链接。
静态链接中,链接器将所有必要的函数库代码和数据纳入a.out文件中。
动态链接中,库函数未包含在a.out文件中,但是对此类函数的调用以指令形式记录在a.out文件中,可减小每个a.out文件的大小。
6.链接库
(1)静态链接库
. gcc -c mysum.c # 将mysum.c编译为mysum.o
. ar rcs libmylib.a mysum.o # 使用成员mysum.o创建静态链接库
. gcc -static t.c -L -lmylib # 使用libmylib.a作为链接库静态编译链接t.c
. a.out
(2)动态链接库
. gcc -c -fPIC mysum.c # 编译到位置独立代码mysum.o
. gcc -shared -o libmylib.so mysum.o # 使用mysum.o创建共享的libmylib.so
. gcc t.c -L. -lmylib # 使用共享库libmylib.so生成a.out
. export LD_LIIBRARY_PATH=./ # 若要运行a.out,必须导出LD_LIBRARY=/
a.out # 运行a.out.ld将加载libmylib.so
7.makefile
make是一个程序,自动有选择地执行编译链接,一个make文件由一系列目标项、依赖项和规则组成
(1)创建一个名为mk1的makefile
myt: type.h t.c mysum.c
      gcc-o myt t.c mysum.c

(2)使用mk1作为makefile运行make
make -f mk1
(3)再次运行make命令,make不会再次构建目标,因为在上次构建后没有任何文件更改
8.gdb调试工具
通过man gdb命令显示gdb手册页

通过代码设置断点
b main
b sub
b 10
在emacs中调试

在终端gdb中调试

chatgpt苏格拉底挑战

针对系统编程知识点进行苏格拉底挑战





针对Unix程序开发步骤知识点进行苏格拉底挑战








标签:文件,mysum,gcc,笔记,学习,Unix,hello,out
From: https://www.cnblogs.com/wzj1234/p/17691090.html

相关文章

  • 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.问题与解决过程......
  • 经典接雨水-刷题笔记
    leetcode42按行求(测试用例通过,但超时)classSolution{publicinttrap(int[]height){intres=0;intn=height.length;intmaxh=0;for(inti=0;i<n;i++){maxh=Math.max(maxh,height[i]);}for(intr......