UC学习day02 计算机语言发展史 操作系统 大型项目的架构

本文深入探讨了GNU/Linux操作系统的核心组件及其功能,如磁盘、内存和进程管理,并概述了计算机语言的发展历程,从机器语言到C语言。此外,详细介绍了C语言程序从源文件到可执行程序的编译过程,包括预处理、编译、汇编和链接阶段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 了解操作系统
GNU/LINIX操作系统
ubuntu linux内核+GNU应用程序+自己开发了一些小程序
套件

unix linux windows macos ios andorid
XENIX informix

磁盘的管理
内存的管理
进程的管理
网络通讯
中断管理
终端管理
驱动 …

帮助的获取
man command
man 1 command ls(1)
man 3 printf printf(3)
man 2 open open(2)

二 计算机语言的发展史
机器语言 汇编语言 C语言
从源文件到可执行程序,中间经历了哪些过程?

$? 最近程序运行的返回值
echo 字符串 将字符串输出到显示器

预处理器 编译器 汇编器 链接器

预处理的过程做了什么?
1 注释的消除
2 预处理指令的执行
在C语言的源程序中所有以#开头的都是预处理指令.
#include
#define
#if …#else…#endif
gcc -E hello.c -o hello.i

#include <>和""的区别
“” 先在当前路径下找头文件,如果找不到,到系统指定的路径下找.如果还找不到报错
<> 在系统指定的路径下找,找不到报错.
系统指定的路径是什么?

将预处理后的程序编译为汇编语言的文件
gcc -S hello.i -o hello.s

将汇编语言文件汇编为目标文件
gcc -c hello.s

将目标文件和库函数 运行时文件进行链接,形成可执行文件
gcc hello.o

./a.out

什么是链接?
什么是运行时文件?
函数库?

三 大型项目的构架
合作开发 团队
需要将一个大型的产品分为多个模块来开发.
5个人写一本书
书的目录
合作的参照规则 协议
头文件
分工 将模块分配给多个人
每个模块就是一个源程序.
编写头文件
#ifndef XXX //头文件卫士
#define XXX
//函数的声明
//类型的定义
//文件的包含
//宏定义
//变量的声明
#endif

.c
#include “tt.h”
#include “tt.h”
变量的声明和变量的定义区别
变量的定义是要为变量分配空间的.变量的声明是不需要分配空间.
其实变量的声明是变量作用域的扩充.
extern int val;
int t_add(){
val;
};
int val=300;
int main(void){
val;
return 0;
}

实例说明 创建一个文件夹 t_math

tarena@ubuntu:~/uc/day02/t_math$ ls
add.c add.o a.out main.c main.o mul.c mul.o p_math.h
tarena@ubuntu:~/uc/day02/t_math$ nm add.o
00000000 T t_add
0000000d T t_sub
tarena@ubuntu:~/uc/day02/t_math$ nm mul.o
0000000c T t_div
00000000 T t_mul
tarena@ubuntu:~/uc/day02/t_math$ nm main.o
00000000 T main
U printf
U t_add
U t_mul

静态链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值