一、什么是操作系统?
操作系统是一款软件。管理硬件资源。还管理软件资源。
操作系统是一款管理计算机资源的软件。
操作系统的分类:
windows unix linux macos ios vxvork
GNU组织 基于unix操作系统开发了GNU项目。
vi gcc bash ...
linux是内核
GNU 应用程序和linux内核绑定。GNU/linux操作系统。
hacker
gnu组织
操作系统的内容:
内存管理
文件管理
文件系统
进程管理
线程管理
信号
网络通讯
二、计算机语言的发展史
32 位机器 4G 40亿
计算机只认识1和0 机器语言
100100011111000110110 sub 汇编语言
100100011111000110111 add
C语言
将C语言的源文件编译链接生成可执行文件的过程
hello.c
第一步:对源文件进行预处理
gcc -E hello.c -o hello.i
将所有的注释去掉
第二步:将hello.i 编译成汇编语言的文件hello.s
gcc -S hello.i -o hello.s
第三步:将hello.s程序汇编成hello.o目标文件
gcc -c hello.s -o hello.o
第四步:将hello.o文件和运行时文件链接
gcc hello.o -o hello
第五步:执行hello文件
./hello
文件名后缀
.c c语言的源文件
.h 头文件
.i 预处理后的文件
.s 汇编文件
.o 目标文件
gcc参数的总结
-E 预处理
-S 从C语言到汇编语言的编译
-c 编译/汇编
-o 指定输出文件的名字
补充:
1.行规,C程序正常结束,返回值为0.非正常结束为非0.
2.echo 字符串 就是将字符串显示在屏幕上。
3.$? 这个变量里存放了,上一条指令的执行结果(返回值)。
echo $? 察看了上一个程序的运行返回的结果值。
4.帮助的查找
man 1 command linux命令的帮助信息
man 2 函数的名字 linux系统调用的帮助信息
man 3 函数的名字 库函数的帮助信息
5.在c程序中出现的#都是预处理指令
#include #define #ifndef #endif #if 。。。
# sharp !bang
文件包含
宏定义
条件编译
三 大型软件工程的组织
(一)业务需求
(二)系统设计 概要设计、详细设计
(三)编码实现
(四)测试 单元测试 继承测试
(五)交付维护
规矩 两个或更多人写作的时候的协议
对应了c语言的接口
头文件
头文件里写什么东西?
1.函数的声明。
2.类型的定义。
3.文件的包含
4.宏定义
5.变量的声明
头文件卫士
#ifndef 宏名
#define 宏名
...
#endif
举例,实现多个源文件,编译链接形成可执行文件。
代码参见
tmath文件夹
编译的基本单位是.c源文件
补充:
nm 二进制文件
T 函数在这个二进制文件中实现
U 函数在这二进制文件中调用了,但是没有代码实现
小结:
一 什么是操作系统?
二、计算机语言的发展史
三、大型软件的组织
操作系统是一款软件。管理硬件资源。还管理软件资源。
操作系统是一款管理计算机资源的软件。
操作系统的分类:
windows unix linux macos ios vxvork
GNU组织 基于unix操作系统开发了GNU项目。
vi gcc bash ...
linux是内核
GNU 应用程序和linux内核绑定。GNU/linux操作系统。
hacker
gnu组织
操作系统的内容:
内存管理
文件管理
文件系统
进程管理
线程管理
信号
网络通讯
二、计算机语言的发展史
32 位机器 4G 40亿
计算机只认识1和0 机器语言
100100011111000110110 sub 汇编语言
100100011111000110111 add
C语言
将C语言的源文件编译链接生成可执行文件的过程
hello.c
第一步:对源文件进行预处理
gcc -E hello.c -o hello.i
将所有的注释去掉
第二步:将hello.i 编译成汇编语言的文件hello.s
gcc -S hello.i -o hello.s
第三步:将hello.s程序汇编成hello.o目标文件
gcc -c hello.s -o hello.o
第四步:将hello.o文件和运行时文件链接
gcc hello.o -o hello
第五步:执行hello文件
./hello
文件名后缀
.c c语言的源文件
.h 头文件
.i 预处理后的文件
.s 汇编文件
.o 目标文件
gcc参数的总结
-E 预处理
-S 从C语言到汇编语言的编译
-c 编译/汇编
-o 指定输出文件的名字
补充:
1.行规,C程序正常结束,返回值为0.非正常结束为非0.
2.echo 字符串 就是将字符串显示在屏幕上。
3.$? 这个变量里存放了,上一条指令的执行结果(返回值)。
echo $? 察看了上一个程序的运行返回的结果值。
4.帮助的查找
man 1 command linux命令的帮助信息
man 2 函数的名字 linux系统调用的帮助信息
man 3 函数的名字 库函数的帮助信息
5.在c程序中出现的#都是预处理指令
#include #define #ifndef #endif #if 。。。
# sharp !bang
文件包含
宏定义
条件编译
三 大型软件工程的组织
(一)业务需求
(二)系统设计 概要设计、详细设计
(三)编码实现
(四)测试 单元测试 继承测试
(五)交付维护
规矩 两个或更多人写作的时候的协议
对应了c语言的接口
头文件
头文件里写什么东西?
1.函数的声明。
2.类型的定义。
3.文件的包含
4.宏定义
5.变量的声明
头文件卫士
#ifndef 宏名
#define 宏名
...
#endif
举例,实现多个源文件,编译链接形成可执行文件。
代码参见
tmath文件夹
编译的基本单位是.c源文件
补充:
nm 二进制文件
T 函数在这个二进制文件中实现
U 函数在这二进制文件中调用了,但是没有代码实现
小结:
一 什么是操作系统?
二、计算机语言的发展史
三、大型软件的组织