[学习笔记]达内纪录片day18 初识UNIX C

    选择打赏方式

这一阶段的老师很有意思,讲课的时候比较随性,完全不按照PPT讲,想到什么就讲什么,本人很喜欢这种风格。

一、什么是UC

UNIX/C    UNIX是一款计算机操作系统
C   就是C语言   C的语法和标准库函数


二、 操作系统

操作系统是由多个子系统构成的,向上为程序员提供接口,使得程序员在不用清楚内部实现的情况下即可完成程序编写,向下通过驱动程序与硬件进行交互。

如:在某个目录下创建一个文件,只需要调用相应的api接口,即可实现。至于操作系统如何通过驱动程序与硬件交互,CPU的哪些寄存器存了什么样的数值,文件系统究竟是怎么样的,硬盘究竟把文件存到了哪个磁道和扇区都可以不需要关心。

计算机的操作系统是管理计算机资源的一款软件。


UNIX操作系统


UNIX操作系统有很多发行版,曾经开源,后来转向闭源。

不同的公司出版的发行版遵循posix标准,即不同的发行版按照次标准提供相同格式的API接口,并得到相同的执行结果,不管你内部的代码如何优化,如何变动,都能让接口统一,使得上层应用程序不改动即可在不同公司的unix下运行。

GNU  项目组搞了很多程序 如vim shell gcc等,并且坚持保持开源,当unix收费后,他们试图搞出一个免费开源的,并且将内核定名为hurd,但是它们失败了。

LINUS 在学生时代搞定了系统内核,然后和GNU合作搞出了linux操作系统,linux参考了unix的设计思想,并且遵循posix标准。


函数

要使用一个函数,需要了解函数的什么?
功能参数(每个参数的类型、参数的个数、每个参数代表的意义)
函数的返回值及其意义。
使用man找函数的帮助信息
man 1 command
man 2 system call
man 3 library

程序和进程
程序是计算机指令的集合,静态的。 存储在硬盘
进程是程序执行的实例。 一个程序运行一次产生一个进程。
动态的  内存 pid PCB(process control block)



三 、计算机语言的发展
机器语言  
由0和1组成的,表示CPU电路开闭的语言
汇编语言

机器语言的助记符,可以用简单的人类的语言完成编程,如mov add sub cmp call jmp等等。

C语言

实际上已经是一种高级语言了,已经不在需要使用EBP+X EBP-X表示参数和局部变量了,直接可以使用自己申请的变量名进行访问,也不需要LOOP和CX寄存器实现循环了,可以使用for while等C语句实现。

只不过相对java、python这种又封装了一层的过于高级的语言显得有些底层。


可执行文件的构建过程

1.预处理 
c语言中所有以#开头的,都是给预处理器下达的指令,而不是C语句。

预处理器的工作流程

对#include进行包含,对宏定义进行替换,根据条件编译需要编译的代码,去除注释信息。

gcc -E hello.c -o hello.i

2.编译

编译器,将C语言翻译成汇编语言

gcc -S hello.i -o hello.s

3.汇编

汇编器,汇编转机器码

gcc -c hello.s -o hell.o

4 链接

链接器 将目标文件和运行时文件  库函数链接形成可执行文件

gcc hello.o



文件名后缀
.h C语言源代码头文件
.c 预处理前的C语言源代码文件

.i 预处理后的C语言源代码文件

.s 汇编语言文件

.o 目标文件
.a 静态库文件
.so 共享库(动态库)文件

THE END!

版权声明:若无特殊注明,本文皆为《 8964CN 》原创,转载请保留文章出处。
本文链接:[学习笔记]达内纪录片day18 初识UNIX C http://www.8964cn.net/?post=79
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!