一,计算机的框架
函数的封装
函数A的实现代码中,调用函数B,那么就说函数A是对函数B的封装。
application ,os , hardware
OS :操作系统的内核
GNU项目组在 unix 创建了bash vi gcc....
什么是操作系统?
操作系统是管理计算机硬件资源的一款软件
操作系统还是管理计算机软件资源的一款软件
操作系统还是一款管理计算机资源的软件
操作系统的内容
管理内存
管理文件
文件系统
进程管理
进程间通信
线程管理
网络通信
什么是GNU?
GNU 项目组 bash,vi,gcc 等等
计算机语言发展史
机器语言 逐步发展为汇编语言,使用汇编语言编写的代码,在机器上运行之前需要翻译成机器语言。
使用汇编语言编写一些语句块,使用C语言的关键字和其他对应。(汇编语言->C语言)
预处理指令是给预处理器下的指令
所有以#开头的都是预处理指令:文件包含 ,条件编译,宏定义,注释
第一步预处理:gcc -E helloc.c -o Hello .i
第二步将预处理后的程序转换成汇编语言的文件 gcc -S helloc.i -o Hello .s(产生AT&T汇编)
第三步将汇编语言转换成机器语言gcc -c hello.s
第四步:需要将目标文件和库文件,运行时文件绑定(链接)gcc hello.o
gcc的几个参数
-E 预处理
-S 将C语言编译成汇编语言
-c 将C语言编译/汇编成机器语言
-o 指定输出文件名字
echo $?
补充:echo “字符串” 将字符串显示到屏幕上
$?最近的一条指令执行结果
帮助的使用
man 3 库函数的名字
man 2 系统调用的函数名字
man 1 命令
大型软件开发组织架构
多个源文件编译/链接形成可执行文件
第一步:编写模块之间的接口。定义一些使用到的协议。定义头文件。头文件的名字。
变量的生明不为变量分配空间。而变量的定义是为变量分配空间的。
extern int i
extern 的作用是扩展变量的作用域
第二步:编写add.c文件,实现t_add和t_sub函数
第三步:编写mul.c文件,实现t_mul和t_div函数
第四步:编写test.c文件,在其中调用函数实现加减乘除运算
第五步:以源文件为单位进行编译
编译的基本单位.c源文件。
第六步:链接的过程,将多个目标文件链接成可执行文件tt gcc add.o mul.o test.o -o tt
补充:
nm命令的使用
nm 二进制文件名 (nm add.o)
链接的过程,就是多个文件拼接成一个可执行文件的过程
目前的链接过程发生在编译的时候,这个链接称为静态链接
动态链接是在代码加载到内存执行的时候发生的。
gcc -v add.o mul.o test.o tt 编译链接形成可执行文件,并将链接的过程全部显示出来
程序的入口不是main函数。C程序的入口是main函数。
C语言是由函数组成的。
写工程的时候,需要写清楚函数之间的调用和被调用的关系即可。
#include <>和" "的区别